WIP Create payment of member subscription with paypal
This commit is contained in:
parent
1537363e59
commit
2f9f4d0675
@ -1248,7 +1248,7 @@ class Adherent extends CommonObject
|
|||||||
* Insert subscription into database and eventually add links to banks, mailman, etc...
|
* Insert subscription into database and eventually add links to banks, mailman, etc...
|
||||||
*
|
*
|
||||||
* @param int $date Date of effect of subscription
|
* @param int $date Date of effect of subscription
|
||||||
* @param double $montant Amount of subscription (0 accepted for some members)
|
* @param double $amount Amount of subscription (0 accepted for some members)
|
||||||
* @param int $accountid Id bank account
|
* @param int $accountid Id bank account
|
||||||
* @param string $operation Type operation (if Id bank account provided)
|
* @param string $operation Type operation (if Id bank account provided)
|
||||||
* @param string $label Label operation (if Id bank account provided)
|
* @param string $label Label operation (if Id bank account provided)
|
||||||
@ -1258,7 +1258,7 @@ class Adherent extends CommonObject
|
|||||||
* @param int $datesubend Date end subscription
|
* @param int $datesubend Date end subscription
|
||||||
* @return int rowid of record added, <0 if KO
|
* @return int rowid of record added, <0 if KO
|
||||||
*/
|
*/
|
||||||
function subscription($date, $montant, $accountid=0, $operation='', $label='', $num_chq='', $emetteur_nom='', $emetteur_banque='', $datesubend=0)
|
function subscription($date, $amount, $accountid=0, $operation='', $label='', $num_chq='', $emetteur_nom='', $emetteur_banque='', $datesubend=0)
|
||||||
{
|
{
|
||||||
global $conf,$langs,$user;
|
global $conf,$langs,$user;
|
||||||
|
|
||||||
@ -1267,7 +1267,7 @@ class Adherent extends CommonObject
|
|||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
if (! $montant) $montant=0;
|
if (! $amount) $amount=0;
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
@ -1287,7 +1287,7 @@ class Adherent extends CommonObject
|
|||||||
$subscription->fk_adherent=$this->id;
|
$subscription->fk_adherent=$this->id;
|
||||||
$subscription->dateh=$date; // Date of new subscription
|
$subscription->dateh=$date; // Date of new subscription
|
||||||
$subscription->datef=$datefin; // End data of new subscription
|
$subscription->datef=$datefin; // End data of new subscription
|
||||||
$subscription->amount=$montant;
|
$subscription->amount=$amount;
|
||||||
$subscription->note=$label;
|
$subscription->note=$label;
|
||||||
|
|
||||||
$rowid=$subscription->create($user);
|
$rowid=$subscription->create($user);
|
||||||
@ -1300,7 +1300,7 @@ class Adherent extends CommonObject
|
|||||||
{
|
{
|
||||||
// Change properties of object (used by triggers)
|
// Change properties of object (used by triggers)
|
||||||
$this->last_subscription_date=dol_now();
|
$this->last_subscription_date=dol_now();
|
||||||
$this->last_subscription_amount=$montant;
|
$this->last_subscription_amount=$amount;
|
||||||
$this->last_subscription_date_start=$date;
|
$this->last_subscription_date_start=$date;
|
||||||
$this->last_subscription_date_end=$datefin;
|
$this->last_subscription_date_end=$datefin;
|
||||||
}
|
}
|
||||||
@ -1319,11 +1319,303 @@ class Adherent extends CommonObject
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->error=$subscription->error;
|
$this->error=$subscription->error;
|
||||||
|
$this->errors=$subscription->errors;
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do complementary actions after subscription recording.
|
||||||
|
*
|
||||||
|
* @param int $subscriptionid Id of created subscription
|
||||||
|
* @param string $option Which action ('bankdirect', 'invoiceonly', ...)
|
||||||
|
* @param int $accountid Id bank account
|
||||||
|
* @param int $datesubscription Date of subscription
|
||||||
|
* @param int $paymentdate Date of payment
|
||||||
|
* @param string $operation Code of type of operation (if Id bank account provided). Example 'CB', ...
|
||||||
|
* @param string $label Label operation (if Id bank account provided)
|
||||||
|
* @param double $amount Amount of subscription (0 accepted for some members)
|
||||||
|
* @param string $num_chq Numero cheque (if Id bank account provided)
|
||||||
|
* @param string $emetteur_nom Name of cheque writer
|
||||||
|
* @param string $emetteur_banque Name of bank of cheque
|
||||||
|
* @param string $autocreatethirdparty Auto create new thirdparty if member not linked to a thirdparty.
|
||||||
|
* @return int <0 if KO, >0 if OK
|
||||||
|
*/
|
||||||
|
function subscriptionComplementaryActions($subscriptionid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, $amount, $num_chq, $emetteur_nom='', $emetteur_banque='', $autocreatethirdparty=0)
|
||||||
|
{
|
||||||
|
global $conf, $langs, $user, $mysoc;
|
||||||
|
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
|
// Insert into bank account directlty (if option choosed for) + link to llx_subscription if option is 'bankdirect'
|
||||||
|
if ($option == 'bankdirect' && $accountid)
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
|
||||||
|
$acct=new Account($this->db);
|
||||||
|
$result=$acct->fetch($accountid);
|
||||||
|
|
||||||
|
$dateop=$paymentdate;
|
||||||
|
|
||||||
|
$insertid=$acct->addline($dateop, $operation, $label, $amount, $num_chq, '', $user, $emetteur_nom, $emetteur_banque);
|
||||||
|
if ($insertid > 0)
|
||||||
|
{
|
||||||
|
$inserturlid=$acct->add_url_line($insertid, $this->id, DOL_URL_ROOT.'/adherents/card.php?rowid=', $this->getFullname($langs), 'member');
|
||||||
|
if ($inserturlid > 0)
|
||||||
|
{
|
||||||
|
// Update table subscription
|
||||||
|
$sql ="UPDATE ".MAIN_DB_PREFIX."subscription SET fk_bank=".$insertid;
|
||||||
|
$sql.=" WHERE rowid=".$subscriptionid;
|
||||||
|
|
||||||
|
dol_syslog("subscription::subscription", LOG_DEBUG);
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if (! $resql)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$this->error=$this->db->lasterror();
|
||||||
|
$this->errors[]=$this->error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$this->error=$acct->error;
|
||||||
|
$this->errors=$acct->errors;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$this->error=$acct->error;
|
||||||
|
$this->errors=$acct->errors;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If option choosed, we create invoice
|
||||||
|
if (($option == 'bankviainvoice' && $accountid) || $option == 'invoiceonly')
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/paymentterm.class.php';
|
||||||
|
|
||||||
|
$invoice=new Facture($this->db);
|
||||||
|
$customer=new Societe($this->db);
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
if (! ($this->fk_soc > 0))
|
||||||
|
{
|
||||||
|
if ($autocreatethirdparty)
|
||||||
|
{
|
||||||
|
// Create a linked thirdparty to member
|
||||||
|
$companyalias='';
|
||||||
|
$fullname = $this->getFullName($langs);
|
||||||
|
|
||||||
|
if ($this->morphy == 'mor')
|
||||||
|
{
|
||||||
|
$companyname=$this->societe;
|
||||||
|
if (! empty($fullname)) $companyalias=$fullname;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$companyname=$fullname;
|
||||||
|
if (! empty($this->societe)) $companyalias=$this->societe;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result=$customer->create_from_member($this, $companyname, $companyalias);
|
||||||
|
if ($result < 0)
|
||||||
|
{
|
||||||
|
$this->error = $company->error;
|
||||||
|
$this->errors = $company->errors;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->fk_soc = $result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
$this->error=$langs->trans("ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst");
|
||||||
|
$this->errors[]=$this->error;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$result=$customer->fetch($this->fk_soc);
|
||||||
|
if ($result <= 0)
|
||||||
|
{
|
||||||
|
$this->error=$customer->error;
|
||||||
|
$this->errors=$customer->errors;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// Create draft invoice
|
||||||
|
$invoice->type=Facture::TYPE_STANDARD;
|
||||||
|
$invoice->cond_reglement_id=$customer->cond_reglement_id;
|
||||||
|
if (empty($invoice->cond_reglement_id))
|
||||||
|
{
|
||||||
|
$paymenttermstatic=new PaymentTerm($this->db);
|
||||||
|
$invoice->cond_reglement_id=$paymenttermstatic->getDefaultId();
|
||||||
|
if (empty($invoice->cond_reglement_id))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$this->error='ErrorNoPaymentTermRECEPFound';
|
||||||
|
$this->errors[]=$this->error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$invoice->socid=$this->fk_soc;
|
||||||
|
$invoice->date=$datesubscription;
|
||||||
|
|
||||||
|
// Possibility to add external linked objects with hooks
|
||||||
|
$invoice->linked_objects['subscription'] = $subscriptionid;
|
||||||
|
if (! empty($_POST['other_linked_objects']) && is_array($_POST['other_linked_objects']))
|
||||||
|
{
|
||||||
|
$invoice->linked_objects = array_merge($invoice->linked_objects, $_POST['other_linked_objects']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result=$invoice->create($user);
|
||||||
|
if ($result <= 0)
|
||||||
|
{
|
||||||
|
$this->error=$invoice->error;
|
||||||
|
$this->errors=$invoice->errors;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// Add line to draft invoice
|
||||||
|
$idprodsubscription=0;
|
||||||
|
if (! empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (! empty($conf->product->enabled) || ! empty($conf->service->enabled))) $idprodsubscription = $conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS;
|
||||||
|
|
||||||
|
$vattouse=0;
|
||||||
|
if (isset($conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS) && $conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS == 'defaultforfoundationcountry')
|
||||||
|
{
|
||||||
|
$vattouse=get_default_tva($mysoc, $mysoc, $idprodsubscription);
|
||||||
|
}
|
||||||
|
//print xx".$vattouse." - ".$mysoc." - ".$customer;exit;
|
||||||
|
$result=$invoice->addline($label,0,1,$vattouse,0,0,$idprodsubscription,0,$datesubscription,$datesubend,0,0,'','TTC',$amount,1);
|
||||||
|
if ($result <= 0)
|
||||||
|
{
|
||||||
|
$this->error=$invoice->error;
|
||||||
|
$this->errors=$invoice->errors;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// Validate invoice
|
||||||
|
$result=$invoice->validate($user);
|
||||||
|
if ($result <= 0)
|
||||||
|
{
|
||||||
|
$this->error=$invoice->error;
|
||||||
|
$this->errors=$invoice->errors;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add payment onto invoice
|
||||||
|
if (! $error && $option == 'bankviainvoice' && $accountid)
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
|
||||||
|
|
||||||
|
$amounts = array();
|
||||||
|
$amounts[$invoice->id] = price2num($amount);
|
||||||
|
|
||||||
|
$paiement = new Paiement($this->db);
|
||||||
|
$paiement->datepaye = $paymentdate;
|
||||||
|
$paiement->amounts = $amounts;
|
||||||
|
$paiement->paiementid = dol_getIdFromCode($this->db,$operation,'c_paiement','code','id',1);
|
||||||
|
$paiement->num_paiement = $num_chq;
|
||||||
|
$paiement->note = $label;
|
||||||
|
$paiement->note_public = $label;
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// Create payment line for invoice
|
||||||
|
$paiement_id = $paiement->create($user);
|
||||||
|
if (! $paiement_id > 0)
|
||||||
|
{
|
||||||
|
$this->error=$paiement->error;
|
||||||
|
$this->errors=$paiement->errors;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// Add transaction into bank account
|
||||||
|
$bank_line_id=$paiement->addPaymentToBank($user,'payment','(SubscriptionPayment)',$accountid,$emetteur_nom,$emetteur_banque);
|
||||||
|
if (! ($bank_line_id > 0))
|
||||||
|
{
|
||||||
|
$this->error=$paiement->error;
|
||||||
|
$this->errors=$paiement->errors;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// Update fk_bank into subscription table
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'subscription SET fk_bank='.$bank_line_id;
|
||||||
|
$sql.= ' WHERE rowid='.$subscriptionid;
|
||||||
|
|
||||||
|
$result = $this->db->query($sql);
|
||||||
|
if (! $result)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// Set invoice as paid
|
||||||
|
$invoice->set_paid($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
|
||||||
|
$newlang = $_REQUEST['lang_id'];
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
|
||||||
|
$newlang = $customer->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
// Generate PDF (whatever is option MAIN_DISABLE_PDF_AUTOUPDATE) so we can include it into email
|
||||||
|
//if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
|
||||||
|
$invoice->generateDocument($invoice->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($error)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function that validate a member
|
* Function that validate a member
|
||||||
*
|
*
|
||||||
|
|||||||
@ -118,7 +118,7 @@ if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights
|
|||||||
{
|
{
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
// Creation user
|
// Creation of thirdparty
|
||||||
$company = new Societe($db);
|
$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'));
|
||||||
|
|
||||||
@ -203,8 +203,8 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
|
|
||||||
$langs->load("banks");
|
$langs->load("banks");
|
||||||
|
|
||||||
$result=$object->fetch($rowid);
|
$result = $object->fetch($rowid);
|
||||||
$result=$adht->fetch($object->typeid);
|
$result = $adht->fetch($object->typeid);
|
||||||
|
|
||||||
// Subscription informations
|
// Subscription informations
|
||||||
$datesubscription=0;
|
$datesubscription=0;
|
||||||
@ -222,7 +222,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
{
|
{
|
||||||
$paymentdate=dol_mktime(0, 0, 0, $_POST["paymentmonth"], $_POST["paymentday"], $_POST["paymentyear"]);
|
$paymentdate=dol_mktime(0, 0, 0, $_POST["paymentmonth"], $_POST["paymentday"], $_POST["paymentyear"]);
|
||||||
}
|
}
|
||||||
$subscription=price2num(GETPOST("subscription",'alpha')); // Amount of subscription
|
$amount=price2num(GETPOST("subscription",'alpha')); // Amount of subscription
|
||||||
$label=$_POST["label"];
|
$label=$_POST["label"];
|
||||||
|
|
||||||
// Payment informations
|
// Payment informations
|
||||||
@ -233,6 +233,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
$emetteur_banque=$_POST["chqbank"];
|
$emetteur_banque=$_POST["chqbank"];
|
||||||
$option=$_POST["paymentsave"];
|
$option=$_POST["paymentsave"];
|
||||||
if (empty($option)) $option='none';
|
if (empty($option)) $option='none';
|
||||||
|
$sendalsoemail=GETPOST("sendmail",'alpha');
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if (! $datesubscription)
|
if (! $datesubscription)
|
||||||
@ -263,8 +264,6 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
$action='addsubscription';
|
$action='addsubscription';
|
||||||
}
|
}
|
||||||
|
|
||||||
$amount = price2num(GETPOST("subscription",'alpha'));
|
|
||||||
|
|
||||||
// Check if a payment is mandatory or not
|
// Check if a payment is mandatory or not
|
||||||
if (! $error && $adht->subscription) // Member type need subscriptions
|
if (! $error && $adht->subscription) // Member type need subscriptions
|
||||||
{
|
{
|
||||||
@ -284,7 +283,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
{
|
{
|
||||||
if (! $_POST["label"]) $errmsg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Label"));
|
if (! $_POST["label"]) $errmsg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Label"));
|
||||||
if ($_POST["paymentsave"] != 'invoiceonly' && ! $_POST["operation"]) $errmsg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("PaymentMode"));
|
if ($_POST["paymentsave"] != 'invoiceonly' && ! $_POST["operation"]) $errmsg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("PaymentMode"));
|
||||||
if ($_POST["paymentsave"] != 'invoiceonly' && ! $_POST["accountid"]) $errmsg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("FinancialAccount"));
|
if ($_POST["paymentsave"] != 'invoiceonly' && ! ($_POST["accountid"] > 0)) $errmsg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("FinancialAccount"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -292,6 +291,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
}
|
}
|
||||||
if ($errmsg)
|
if ($errmsg)
|
||||||
{
|
{
|
||||||
|
$error++;
|
||||||
setEventMessages($errmsg, null, 'errors');
|
setEventMessages($errmsg, null, 'errors');
|
||||||
$action='addsubscription';
|
$action='addsubscription';
|
||||||
}
|
}
|
||||||
@ -299,12 +299,13 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Record the subscription then complementary actions
|
||||||
if (! $error && $action=='subscription')
|
if (! $error && $action=='subscription')
|
||||||
{
|
{
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
// Create subscription
|
// Create subscription
|
||||||
$crowid=$object->subscription($datesubscription, $subscription, $accountid, $operation, $label, $num_chq, $emetteur_nom, $emetteur_banque, $datesubend);
|
$crowid=$object->subscription($datesubscription, $amount, $accountid, $operation, $label, $num_chq, $emetteur_nom, $emetteur_banque, $datesubend);
|
||||||
if ($crowid <= 0)
|
if ($crowid <= 0)
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
@ -314,232 +315,11 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
// Insert into bank account directlty (if option choosed for) + link to llx_subscription if option is 'bankdirect'
|
$result = $object->subscriptionComplementaryActions($crowid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, $amount, $num_chq, $emetteur_nom, $emetteur_banque);
|
||||||
if ($option == 'bankdirect' && $accountid)
|
if ($result < 0)
|
||||||
{
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
|
||||||
|
|
||||||
$acct=new Account($db);
|
|
||||||
$result=$acct->fetch($accountid);
|
|
||||||
|
|
||||||
$dateop=$paymentdate;
|
|
||||||
|
|
||||||
$insertid=$acct->addline($dateop, $operation, $label, $subscription, $num_chq, '', $user, $emetteur_nom, $emetteur_banque);
|
|
||||||
if ($insertid > 0)
|
|
||||||
{
|
|
||||||
$inserturlid=$acct->add_url_line($insertid, $object->id, DOL_URL_ROOT.'/adherents/card.php?rowid=', $object->getFullname($langs), 'member');
|
|
||||||
if ($inserturlid > 0)
|
|
||||||
{
|
|
||||||
// Update table subscription
|
|
||||||
$sql ="UPDATE ".MAIN_DB_PREFIX."subscription SET fk_bank=".$insertid;
|
|
||||||
$sql.=" WHERE rowid=".$crowid;
|
|
||||||
|
|
||||||
dol_syslog("subscription::subscription", LOG_DEBUG);
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
if (! $resql)
|
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
$errmsg=$db->lasterror();
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
setEventMessages($errmsg, null, 'errors');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$error++;
|
|
||||||
$errmsg=$acct->error;
|
|
||||||
$errmsgs=$acct->errors;
|
|
||||||
setEventMessages($errmsg, $errmsgs, 'errors');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$error++;
|
|
||||||
$errmsg=$acct->error;
|
|
||||||
$errmsgs=$acct->errors;
|
|
||||||
setEventMessages($errmsg, $errmsgs, 'errors');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If option choosed, we create invoice
|
|
||||||
if (($option == 'bankviainvoice' && $accountid) || $option == 'invoiceonly')
|
|
||||||
{
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/paymentterm.class.php';
|
|
||||||
|
|
||||||
$invoice=new Facture($db);
|
|
||||||
$customer=new Societe($db);
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
if (! ($object->fk_soc > 0))
|
|
||||||
{
|
|
||||||
$langs->load("errors");
|
|
||||||
$errmsg=$langs->trans("ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst");
|
|
||||||
setEventMessages($errmsg, null, 'errors');
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
$result=$customer->fetch($object->fk_soc);
|
|
||||||
if ($result <= 0)
|
|
||||||
{
|
|
||||||
$errmsg=$customer->error;
|
|
||||||
$errmsgs=$acct->errors;
|
|
||||||
setEventMessages($errmsg, $errmsgs, 'errors');
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
// Create draft invoice
|
|
||||||
$invoice->type= Facture::TYPE_STANDARD;
|
|
||||||
$invoice->cond_reglement_id=$customer->cond_reglement_id;
|
|
||||||
if (empty($invoice->cond_reglement_id))
|
|
||||||
{
|
|
||||||
$paymenttermstatic=new PaymentTerm($db);
|
|
||||||
$invoice->cond_reglement_id=$paymenttermstatic->getDefaultId();
|
|
||||||
if (empty($invoice->cond_reglement_id))
|
|
||||||
{
|
|
||||||
$error++;
|
|
||||||
$errmsg='ErrorNoPaymentTermRECEPFound';
|
|
||||||
setEventMessages($errmsg, null, 'errors');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$invoice->socid=$object->fk_soc;
|
|
||||||
$invoice->date=$datesubscription;
|
|
||||||
|
|
||||||
// Possibility to add external linked objects with hooks
|
|
||||||
$invoice->linked_objects['subscription'] = $crowid;
|
|
||||||
if (! empty($_POST['other_linked_objects']) && is_array($_POST['other_linked_objects']))
|
|
||||||
{
|
|
||||||
$invoice->linked_objects = array_merge($invoice->linked_objects, $_POST['other_linked_objects']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$result=$invoice->create($user);
|
|
||||||
if ($result <= 0)
|
|
||||||
{
|
|
||||||
$errmsg=$invoice->error;
|
|
||||||
$errmsgs=$invoice->errors;
|
|
||||||
setEventMessages($errmsg, $errmsgs, 'errors');
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
// Add line to draft invoice
|
|
||||||
$idprodsubscription=0;
|
|
||||||
if (! empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (! empty($conf->product->enabled) || ! empty($conf->service->enabled))) $idprodsubscription = $conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS;
|
|
||||||
|
|
||||||
$vattouse=0;
|
|
||||||
if (isset($conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS) && $conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS == 'defaultforfoundationcountry')
|
|
||||||
{
|
|
||||||
$vattouse=get_default_tva($mysoc, $mysoc, $idprodsubscription);
|
|
||||||
}
|
|
||||||
//print xx".$vattouse." - ".$mysoc." - ".$customer;exit;
|
|
||||||
$result=$invoice->addline($label,0,1,$vattouse,0,0,$idprodsubscription,0,$datesubscription,$datesubend,0,0,'','TTC',$subscription,1);
|
|
||||||
if ($result <= 0)
|
|
||||||
{
|
|
||||||
$errmsg=$invoice->error;
|
|
||||||
setEventMessages($errmsg, null, 'errors');
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
// Validate invoice
|
|
||||||
$result=$invoice->validate($user);
|
|
||||||
if ($result <= 0)
|
|
||||||
{
|
|
||||||
$errmsg=$invoice->error;
|
|
||||||
$errmsgs=$invoice->errors;
|
|
||||||
setEventMessages($errmsg, $errmsgs, 'errors');
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add payment onto invoice
|
|
||||||
if ($option == 'bankviainvoice' && $accountid)
|
|
||||||
{
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
|
|
||||||
|
|
||||||
$amounts[$invoice->id] = price2num($subscription);
|
|
||||||
$paiement = new Paiement($db);
|
|
||||||
$paiement->datepaye = $paymentdate;
|
|
||||||
$paiement->amounts = $amounts;
|
|
||||||
$paiement->paiementid = dol_getIdFromCode($db,$operation,'c_paiement','code','id',1);
|
|
||||||
$paiement->num_paiement = $num_chq;
|
|
||||||
$paiement->note = $label;
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
// Create payment line for invoice
|
|
||||||
$paiement_id = $paiement->create($user);
|
|
||||||
if (! $paiement_id > 0)
|
|
||||||
{
|
|
||||||
$errmsg=$paiement->error;
|
|
||||||
$errmsgs=$paiement->errors;
|
|
||||||
setEventMessages($errmsg, $errmsgs, 'errors');
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
// Add transaction into bank account
|
|
||||||
$bank_line_id=$paiement->addPaymentToBank($user,'payment','(SubscriptionPayment)',$accountid,$emetteur_nom,$emetteur_banque);
|
|
||||||
if (! ($bank_line_id > 0))
|
|
||||||
{
|
|
||||||
$errmsg=$paiement->error;
|
|
||||||
$errmsgs=$paiement->errors;
|
|
||||||
setEventMessages($paiement->error, $paiement->errors, 'errors');
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
// Update fk_bank into subscription table
|
|
||||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.'subscription SET fk_bank='.$bank_line_id;
|
|
||||||
$sql.= ' WHERE rowid='.$crowid;
|
|
||||||
|
|
||||||
$result = $db->query($sql);
|
|
||||||
if (! $result)
|
|
||||||
{
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
// Set invoice as paid
|
|
||||||
$invoice->set_paid($user);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
// Define output language
|
|
||||||
$outputlangs = $langs;
|
|
||||||
$newlang = '';
|
|
||||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id']))
|
|
||||||
$newlang = $_REQUEST['lang_id'];
|
|
||||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang))
|
|
||||||
$newlang = $customer->default_lang;
|
|
||||||
if (! empty($newlang)) {
|
|
||||||
$outputlangs = new Translate("", $conf);
|
|
||||||
$outputlangs->setDefaultLang($newlang);
|
|
||||||
}
|
|
||||||
// Generate PDF (whatever is option MAIN_DISABLE_PDF_AUTOUPDATE) so we can include it into email
|
|
||||||
//if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
|
||||||
|
|
||||||
$invoice->generateDocument($invoice->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -557,7 +337,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
// Send confirmation Email
|
// Send confirmation Email
|
||||||
if ($object->email && $_POST["sendmail"])
|
if ($object->email && $sendalsoemail)
|
||||||
{
|
{
|
||||||
$subjecttosend=$object->makeSubstitution($conf->global->ADHERENT_MAIL_COTIS_SUBJECT);
|
$subjecttosend=$object->makeSubstitution($conf->global->ADHERENT_MAIL_COTIS_SUBJECT);
|
||||||
$texttosend=$object->makeSubstitution($adht->getMailOnSubscription());
|
$texttosend=$object->makeSubstitution($adht->getMailOnSubscription());
|
||||||
@ -569,7 +349,11 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
setEventMessages($errmsg, null, 'errors');
|
setEventMessages($errmsg, null, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean some POST vars
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
$_POST["subscription"]='';
|
$_POST["subscription"]='';
|
||||||
$_POST["accountid"]='';
|
$_POST["accountid"]='';
|
||||||
$_POST["operation"]='';
|
$_POST["operation"]='';
|
||||||
@ -933,7 +717,7 @@ if ($rowid > 0)
|
|||||||
|
|
||||||
print load_fiche_titre($langs->trans("NewCotisation"));
|
print load_fiche_titre($langs->trans("NewCotisation"));
|
||||||
|
|
||||||
// Define default choice to select
|
// Define default choice for complementary actions
|
||||||
$bankdirect=0; // 1 means option by default is write to bank direct with no invoice
|
$bankdirect=0; // 1 means option by default is write to bank direct with no invoice
|
||||||
$invoiceonly=0; // 1 means option by default is invoice only
|
$invoiceonly=0; // 1 means option by default is invoice only
|
||||||
$bankviainvoice=0; // 1 means option by default is write to bank via invoice
|
$bankviainvoice=0; // 1 means option by default is write to bank via invoice
|
||||||
@ -1047,15 +831,11 @@ if ($rowid > 0)
|
|||||||
}
|
}
|
||||||
if (! $datefrom)
|
if (! $datefrom)
|
||||||
{
|
{
|
||||||
|
$datefrom=$object->datevalid;
|
||||||
if ($object->datefin > 0)
|
if ($object->datefin > 0)
|
||||||
{
|
{
|
||||||
$datefrom=dol_time_plus_duree($object->datefin,1,'d');
|
$datefrom=dol_time_plus_duree($object->datefin,1,'d');
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
//$datefrom=dol_now();
|
|
||||||
$datefrom=$object->datevalid;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
print $form->select_date($datefrom,'','','','',"subscription",1,1,1);
|
print $form->select_date($datefrom,'','','','',"subscription",1,1,1);
|
||||||
print "</td></tr>";
|
print "</td></tr>";
|
||||||
@ -1207,7 +987,7 @@ if ($rowid > 0)
|
|||||||
$subjecttosend=$object->makeSubstitution($conf->global->ADHERENT_MAIL_COTIS_SUBJECT);
|
$subjecttosend=$object->makeSubstitution($conf->global->ADHERENT_MAIL_COTIS_SUBJECT);
|
||||||
$texttosend=$object->makeSubstitution($adht->getMailOnSubscription());
|
$texttosend=$object->makeSubstitution($adht->getMailOnSubscription());
|
||||||
|
|
||||||
$tmp='<input name="sendmail" type="checkbox"'.(GETPOST('sendmail')?GETPOST('sendmail'):(! empty($conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL)?' checked':'')).'>';
|
$tmp='<input name="sendmail" type="checkbox"'.(GETPOST('sendmail','alpha')?' checked':(! empty($conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL)?' checked':'')).'>';
|
||||||
$helpcontent='';
|
$helpcontent='';
|
||||||
$helpcontent.='<b>'.$langs->trans("MailFrom").'</b>: '.$conf->global->ADHERENT_MAIL_FROM.'<br>'."\n";
|
$helpcontent.='<b>'.$langs->trans("MailFrom").'</b>: '.$conf->global->ADHERENT_MAIL_FROM.'<br>'."\n";
|
||||||
$helpcontent.='<b>'.$langs->trans("MailRecipient").'</b>: '.$object->email.'<br>'."\n";
|
$helpcontent.='<b>'.$langs->trans("MailRecipient").'</b>: '.$object->email.'<br>'."\n";
|
||||||
|
|||||||
@ -239,7 +239,7 @@ class Facture extends CommonInvoice
|
|||||||
* @param int $forceduedate 1=Do not recalculate due date from payment condition but force it with value
|
* @param int $forceduedate 1=Do not recalculate due date from payment condition but force it with value
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function create($user,$notrigger=0,$forceduedate=0)
|
function create(User $user, $notrigger=0, $forceduedate=0)
|
||||||
{
|
{
|
||||||
global $langs,$conf,$mysoc,$hookmanager;
|
global $langs,$conf,$mysoc,$hookmanager;
|
||||||
$error=0;
|
$error=0;
|
||||||
@ -265,13 +265,13 @@ class Facture extends CommonInvoice
|
|||||||
$this->multicurrency_tx = 1;
|
$this->multicurrency_tx = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::create user=".$user->id);
|
dol_syslog(get_class($this)."::create user=".$user->id." date=".$this->date);
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if (empty($this->date) || empty($user->id))
|
if (empty($this->date))
|
||||||
{
|
{
|
||||||
$this->error="ErrorBadParameter";
|
$this->error="Try to create an invoice with an empty parameter (date)";
|
||||||
dol_syslog(get_class($this)."::create Try to create an invoice with an empty parameter (user, date, ...)", LOG_ERR);
|
dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR);
|
||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
$soc = new Societe($this->db);
|
$soc = new Societe($this->db);
|
||||||
|
|||||||
@ -285,10 +285,18 @@ if ($action == 'dopayment')
|
|||||||
$desc=GETPOST("desc",'alpha');
|
$desc=GETPOST("desc",'alpha');
|
||||||
|
|
||||||
$mesg='';
|
$mesg='';
|
||||||
if (empty($PAYPAL_API_PRICE) || ! is_numeric($PAYPAL_API_PRICE)) $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Amount"));
|
if (empty($PAYPAL_API_PRICE) || ! is_numeric($PAYPAL_API_PRICE))
|
||||||
|
{
|
||||||
|
$mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Amount"));
|
||||||
|
$action='';
|
||||||
|
}
|
||||||
//elseif (empty($EMAIL)) $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("YourEMail"));
|
//elseif (empty($EMAIL)) $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("YourEMail"));
|
||||||
//elseif (! isValidEMail($EMAIL)) $mesg=$langs->trans("ErrorBadEMail",$EMAIL);
|
//elseif (! isValidEMail($EMAIL)) $mesg=$langs->trans("ErrorBadEMail",$EMAIL);
|
||||||
elseif (! $origfulltag) $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("PaymentCode"));
|
elseif (! $origfulltag)
|
||||||
|
{
|
||||||
|
$mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("PaymentCode"));
|
||||||
|
$action='';
|
||||||
|
}
|
||||||
|
|
||||||
//var_dump($_POST);
|
//var_dump($_POST);
|
||||||
if (empty($mesg))
|
if (empty($mesg))
|
||||||
|
|||||||
@ -271,21 +271,136 @@ $ispostactionok = 0;
|
|||||||
$postactionmessages = array();
|
$postactionmessages = array();
|
||||||
if ($ispaymentok)
|
if ($ispaymentok)
|
||||||
{
|
{
|
||||||
|
// Set permission for the anonymous user
|
||||||
|
$user->rights->societe->creer = 1;
|
||||||
|
$user->rights->facture->creer = 1;
|
||||||
|
$user->rights->adherent->cotisation->creer = 1;
|
||||||
|
|
||||||
if (in_array('MEM', array_keys($tmptag)))
|
if (in_array('MEM', array_keys($tmptag)))
|
||||||
{
|
{
|
||||||
|
$defaultdelay=1;
|
||||||
|
$defaultdelayunit='y';
|
||||||
|
|
||||||
// Record subscription
|
// Record subscription
|
||||||
include_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||||
$member = new Adherent($db);
|
include_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
|
||||||
$result = $member->fetch(0, $tmptag['MEM']);
|
include_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php';
|
||||||
if ($result)
|
$adht = new AdherentType($db);
|
||||||
{
|
$object = new Adherent($db);
|
||||||
if (empty($paymentType)) $paymentType = 'CB';
|
|
||||||
$paymentTypeId = dol_getIdFromCode($db, $paymentType,'c_paiement','code','id',1);
|
|
||||||
|
|
||||||
|
$result1 = $object->fetch(0, $tmptag['MEM']);
|
||||||
|
$result2 = $adht->fetch($object->typeid);
|
||||||
|
|
||||||
|
if ($result1 > 0 && $result2 > 0)
|
||||||
|
{
|
||||||
|
$paymentTypeId = 0;
|
||||||
|
if ($paymentmethod == 'paybox') $paymentTypeId = $conf->global->PAYBOX_PAYMENT_MODE_FOR_PAYMENTS;
|
||||||
|
if ($paymentmethod == 'paypal') $paymentTypeId = $conf->global->PAYPAL_PAYMENT_MODE_FOR_PAYMENTS;
|
||||||
|
if ($paymentmethod == 'stripe') $paymentTypeId = $conf->global->STRIPE_PAYMENT_MODE_FOR_PAYMENTS;
|
||||||
|
if (empty($paymentTypeId))
|
||||||
|
{
|
||||||
|
$paymentType = $_SESSION["paymentType"];
|
||||||
|
if (empty($paymentType)) $paymentType = 'CB';
|
||||||
|
$paymentTypeId = dol_getIdFromCode($db, $paymentType, 'c_paiement', 'code', 'id', 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$currencyCodeType = $_SESSION['currencyCodeType'];
|
||||||
|
|
||||||
|
// Do action only if $FinalPaymentAmt is set (session variable is cleaned after this page to avoid duplicate actions when page is POST a second time)
|
||||||
if (! empty($FinalPaymentAmt) && $paymentTypeId > 0)
|
if (! empty($FinalPaymentAmt) && $paymentTypeId > 0)
|
||||||
{
|
{
|
||||||
|
// Subscription informations
|
||||||
|
$datesubscription=$object->datevalid;
|
||||||
|
if ($object->datefin > 0)
|
||||||
|
{
|
||||||
|
$datesubscription=dol_time_plus_duree($object->datefin,1,'d');
|
||||||
|
}
|
||||||
|
$datesubend=dol_time_plus_duree(dol_time_plus_duree($datesubscription,$defaultdelay,$defaultdelayunit),-1,'d');
|
||||||
|
$paymentdate=$now;
|
||||||
|
$amount = $FinalPaymentAmt;
|
||||||
|
$label='Online subscription '.dol_print_date($now, 'standard');
|
||||||
|
|
||||||
|
// Payment informations
|
||||||
|
$accountid = 0;
|
||||||
|
if ($paymentmethod == 'paybox') $accountid = $conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS;
|
||||||
|
if ($paymentmethod == 'paypal') $accountid = $conf->global->PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS;
|
||||||
|
if ($paymentmethod == 'stripe') $accountid = $conf->global->STRIPE_BANK_ACCOUNT_FOR_PAYMENTS;
|
||||||
|
$operation=$paymentTypeId; // Payment mode
|
||||||
|
$num_chq='';
|
||||||
|
$emetteur_nom='';
|
||||||
|
$emetteur_banque='';
|
||||||
|
// Define default choice for complementary actions
|
||||||
|
$option='';
|
||||||
|
if (! empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankviainvoice' && ! empty($conf->banque->enabled) && ! empty($conf->societe->enabled) && ! empty($conf->facture->enabled)) $option='bankviainvoice';
|
||||||
|
else if (! empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankdirect' && ! empty($conf->banque->enabled)) $option='bankdirect';
|
||||||
|
else if (! empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'invoiceonly' && ! empty($conf->banque->enabled) && ! empty($conf->societe->enabled) && ! empty($conf->facture->enabled)) $option='invoiceonly';
|
||||||
|
if (empty($option)) $option='none';
|
||||||
|
$sendalsoemail = 1;
|
||||||
|
|
||||||
|
// Record the subscription then complementary actions
|
||||||
|
$db->begin();
|
||||||
|
|
||||||
|
// Create subscription
|
||||||
|
$crowid=$object->subscription($datesubscription, $amount, $accountid, $operation, $label, $num_chq, $emetteur_nom, $emetteur_banque, $datesubend);
|
||||||
|
if ($crowid <= 0)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$errmsg=$object->error;
|
||||||
|
$postactionmessages[] = $errmsg;
|
||||||
|
$ispostactionok = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$postactionmessages[]='Subscription created';
|
||||||
|
$ispostactionok=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$result = $object->subscriptionComplementaryActions($crowid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, $amount, $num_chq, $emetteur_nom, $emetteur_banque, 1);
|
||||||
|
if ($result < 0)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$postactionmessages[] = $object->error;
|
||||||
|
$postactionmessages = array_merge($postactionmessages, $object->errors);
|
||||||
|
$ispostactionok = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($option == 'bankviainvoice') $postactionmessages[] = 'Invoice, payment and bank record created';
|
||||||
|
if ($option == 'bankdirect') $postactionmessages[] = 'Bank record created';
|
||||||
|
if ($option == 'invoiceonly') $postactionmessages[] = 'Invoice recorded';
|
||||||
|
$ispostactionok = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$db->commit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$db->rollback();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send email
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// Send confirmation Email
|
||||||
|
if ($object->email && $sendalsoemail)
|
||||||
|
{
|
||||||
|
$subjecttosend=$object->makeSubstitution($conf->global->ADHERENT_MAIL_COTIS_SUBJECT);
|
||||||
|
$texttosend=$object->makeSubstitution($adht->getMailOnSubscription());
|
||||||
|
|
||||||
|
$result=$object->send_an_email($texttosend,$subjecttosend,array(),array(),array(),"","",0,-1);
|
||||||
|
if ($result < 0)
|
||||||
|
{
|
||||||
|
$errmsg=$object->error;
|
||||||
|
$postactionmessages[] = $errmsg;
|
||||||
|
$ispostactionok = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -295,7 +410,7 @@ if ($ispaymentok)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$postactionmessages[] = 'Member for subscription payed '.$tmptag['MEM'].' was not found';
|
$postactionmessages[] = 'Member '.$tmptag['MEM'].' for subscription payed was not found';
|
||||||
$ispostactionok = -1;
|
$ispostactionok = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -322,8 +437,11 @@ if ($ispaymentok)
|
|||||||
|
|
||||||
$currencyCodeType = $_SESSION['currencyCodeType'];
|
$currencyCodeType = $_SESSION['currencyCodeType'];
|
||||||
|
|
||||||
|
// Do action only if $FinalPaymentAmt is set (session variable is cleaned after this page to avoid duplicate actions when page is POST a second time)
|
||||||
if (! empty($FinalPaymentAmt) && $paymentTypeId > 0)
|
if (! empty($FinalPaymentAmt) && $paymentTypeId > 0)
|
||||||
{
|
{
|
||||||
|
$db->begin();
|
||||||
|
|
||||||
// Creation of payment line
|
// Creation of payment line
|
||||||
include_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
||||||
$paiement = new Paiement($db);
|
$paiement = new Paiement($db);
|
||||||
@ -644,6 +762,7 @@ htmlPrintOnlinePaymentFooter($mysoc,$langs,0,$suffix);
|
|||||||
unset($_SESSION["FinalPaymentAmt"]);
|
unset($_SESSION["FinalPaymentAmt"]);
|
||||||
unset($_SESSION["TRANSACTIONID"]);
|
unset($_SESSION["TRANSACTIONID"]);
|
||||||
|
|
||||||
|
|
||||||
llxFooter('', 'public');
|
llxFooter('', 'public');
|
||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|||||||
@ -3102,6 +3102,8 @@ class Societe extends CommonObject
|
|||||||
{
|
{
|
||||||
global $user,$langs;
|
global $user,$langs;
|
||||||
|
|
||||||
|
dol_syslog(get_class($this)."::create_from_member", LOG_DEBUG);
|
||||||
|
|
||||||
$name = $socname?$socname:$member->societe;
|
$name = $socname?$socname:$member->societe;
|
||||||
if (empty($name)) $name=$member->getFullName($langs);
|
if (empty($name)) $name=$member->getFullName($langs);
|
||||||
|
|
||||||
@ -3134,7 +3136,6 @@ class Societe extends CommonObject
|
|||||||
$sql.= " SET fk_soc=".$this->id;
|
$sql.= " SET fk_soc=".$this->id;
|
||||||
$sql.= " WHERE rowid=".$member->id;
|
$sql.= " WHERE rowid=".$member->id;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::create_from_member", LOG_DEBUG);
|
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user