Browse Source

FIX Can't create a thirdparty from member if customer code is mandatory.

Laurent Destailleur 6 years ago
parent
commit
31d032d5d3
2 changed files with 16 additions and 7 deletions
  1. 9 1
      htdocs/adherents/subscription.php
  2. 7 6
      htdocs/societe/class/societe.class.php

+ 9 - 1
htdocs/adherents/subscription.php

@@ -120,7 +120,7 @@ if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights
 	{
 		// Creation of thirdparty
 		$company = new Societe($db);
-		$result=$company->create_from_member($object, GETPOST('companyname', 'alpha'), GETPOST('companyalias', 'alpha'));
+		$result=$company->create_from_member($object, GETPOST('companyname', 'alpha'), GETPOST('companyalias', 'alpha'), GETPOST('customercode', 'alpha'));
 
 		if ($result < 0)
 		{
@@ -854,6 +854,14 @@ if ($rowid > 0)
 				array('label' => $langs->trans("NameToCreate"), 'type' => 'text', 'name' => 'companyname', 'value' => $companyname, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"'),
 				array('label' => $langs->trans("AliasNames"), 'type' => 'text', 'name' => 'companyalias', 'value' => $companyalias, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"')
 			);
+			// If customer code was forced to "required", we ask it at creation to avoid error later
+			if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED))
+			{
+				$tmpcompany = new Societe($db);
+				$tmpcompany->name=$companyname;
+				$customercode = $tmpcompany->get_codeclient($tmpcompany,0);
+				$formquestion[]=array('label' => $langs->trans("CustomerCode"), 'type' => 'text', 'name' => 'customercode', 'value' => $customercode, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"');
+			}
 
 			print $form->formconfirm($_SERVER["PHP_SELF"]."?rowid=".$object->id,$langs->trans("CreateDolibarrThirdParty"),$langs->trans("ConfirmCreateThirdParty"),"confirm_create_thirdparty",$formquestion,1);
 		}

+ 7 - 6
htdocs/societe/class/societe.class.php

@@ -3244,12 +3244,13 @@ class Societe extends CommonObject
 	/**
 	 *  Create a third party into database from a member object
 	 *
-	 *  @param	Adherent	$member		Object member
-	 * 	@param	string	$socname		Name of third party to force
-	 *	@param	string	$socalias	Alias name of third party to force
-	 *  @return int					<0 if KO, id of created account if OK
+	 *  @param	Adherent	$member			Object member
+	 * 	@param	string		$socname		Name of third party to force
+	 *	@param	string		$socalias		Alias name of third party to force
+	 *  @param	string		$customercode	Customer code
+	 *  @return int							<0 if KO, id of created account if OK
 	 */
-	function create_from_member(Adherent $member, $socname='', $socalias='')
+	function create_from_member(Adherent $member, $socname='', $socalias='', $customercode='')
 	{
 		global $user,$langs;
 
@@ -3274,7 +3275,7 @@ class Societe extends CommonObject
 		$this->skype=$member->skype;
 
 		$this->client = 1;				// A member is a customer by default
-		$this->code_client = -1;
+		$this->code_client = ($customercode?$customercode:-1);
 		$this->code_fournisseur = -1;
 
 		$this->db->begin();