Withdrawals: Add bank transaction. Payment of invoice should not be in standing order creation. Transaction added and payment translated to infocredit function

This commit is contained in:
Juanjo Menent 2011-01-29 21:37:50 +00:00
parent e2ffd8276c
commit 284606af73
6 changed files with 147 additions and 150 deletions

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -28,6 +28,7 @@
require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php");
require_once(DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php");
require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php");
require_once(DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php');
if ($conf->esaeb->enabled) require_once(DOL_DOCUMENT_ROOT.'/esaeb/class/esaeb19.class.php');
@ -48,7 +49,6 @@ class BonPrelevement extends CommonObject
var $emetteur_number_key;
var $total;
var $_fetched;
var $statut; // 0-Wait, 1-Trans, 2-Done
var $labelstatut=array();
@ -411,16 +411,48 @@ class BonPrelevement extends CommonObject
if ($this->db->query($sql))
{
//$subject = "Credit prelevement ".$this->ref." a la banque";
/*$message = "Le bon de prelevement ".$this->ref;
$message.= " a ete credite par la banque.\n";
$message.= "Date credit : ".dol_print_date($date,'dayhour');*/
$langs->load('withdrawals');
$subject = $langs->trans("InfoCreditSubject", $this->ref);
$message = $langs->trans("InfoCreditMessage", $this->ref, dol_print_date($date,'dayhour'));
$this->Notify($user, "cr", $subject, $message);
//Add payment of withdrawal into bank
$bankaccount = $conf->global->PRELEVEMENT_ID_BANKACCOUNT;
$facs = array();
$amounts = array();
$facs = $this->_get_list_factures();
for ($i = 0 ; $i < sizeof($facs) ; $i++)
{
$fac = new Facture($this->db);
$fac->fetch($facs[$i]);
$amounts[$fac->id] = $fac->total_ttc;
//$result = $fac->set_paid($user);
}
$paiement = new Paiement($this->db);
$paiement->datepaye = $date ;//$this->date_credit;
$paiement->amounts = $amounts;
$paiement->paiementid = 3; //
$paiement->num_paiement = $this->ref ;
$paiement_id = $paiement->create($user);
if ($paiement_id < 0)
{
dol_syslog("BonPrelevement::set_credite Erreur 1");
$error++;
}
$result=$paiement->addPaymentToBank($user,'payment','(WithdrawalPayment)',$bankaccount);
if ($result < 0)
{
dol_syslog("BonPrelevement::set_credite Erreur 1");
$error++;
}
// Update prelevement line
// TODO: Translate to ligne-prelevement.class.php
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_lignes";
@ -749,11 +781,9 @@ class BonPrelevement extends CommonObject
dol_syslog("BonPrelevement::Create banque=$banque guichet=$guichet");
//require_once (DOL_DOCUMENT_ROOT."/compta/prelevement/bon-prelevement.class.php");
require_once (DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php");
require_once (DOL_DOCUMENT_ROOT."/societe/class/societe.class.php");
require_once (DOL_DOCUMENT_ROOT."/compta/paiement/class/paiement.class.php");
$error = 0;
$datetimeprev = time();
@ -763,8 +793,8 @@ class BonPrelevement extends CommonObject
$puser = new User($this->db, $conf->global->PRELEVEMENT_USER);
/**
* Lectures des factures
/*
* Read invoices
*/
$factures = array();
$factures_prev = array();
@ -887,7 +917,7 @@ class BonPrelevement extends CommonObject
{
/*
* We are in real mode.
* We create withdraw receipt, payments and build withdraw into disk
* We create withdraw receipt and build withdraw into disk
*/
$this->db->begin();
@ -955,157 +985,119 @@ class BonPrelevement extends CommonObject
*
*
*/
if (!$error)
{
dol_syslog("Start generation payments for the ".sizeof($factures_prev)." invoices");
if (!$error)
{
if (sizeof($factures_prev) > 0)
{
foreach ($factures_prev as $fac)
{
// Fetch invoice
$fact = new Facture($this->db);
$fact->fetch($fac[0]);
$ri = $bonprev->AddFacture($fac[0], $fac[2], $fac[8], $fac[7],
$fac[3], $fac[4], $fac[5], $fac[6]);
if ($ri <> 0)
{
$error++;
}
if (sizeof($factures_prev) > 0)
{
foreach ($factures_prev as $fac)
{
// Fetch invoice
$fact = new Facture($this->db);
$fact->fetch($fac[0]);
/*
* Update orders
*
*/
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande";
$sql.= " SET traite = 1";
$sql.= ", date_traite = ".$this->db->idate(mktime());
$sql.= ", fk_prelevement_bons = ".$prev_id;
$sql.= " WHERE rowid = ".$fac[1];
// Create payment
$pai = new Paiement($this->db);
dol_syslog("Bon-Prelevement::Create sql=".$sql, LOG_DEBUG);
if ($this->db->query($sql))
{
$pai->amounts = array();
$pai->amounts[$fac[0]] = $fact->total_ttc;
$pai->datepaye = $datetimeprev;
$pai->paiementid = 3; // prelevement
$pai->num_paiement = $ref;
}
else
{
$error++;
dol_syslog("Erreur mise a jour des demandes");
dol_syslog($this->db->error());
}
if ($pai->create($puser, 1) < 0) // on appelle en no_commit
{
$error++;
dol_syslog("Erreur creation paiement facture ".$fac[0]);
}
else
{
/*
* Validation du paiement
*/
$pai->valide();
}
}
/*
* Ajout d'une ligne de prelevement
*
*
* $fac[3] : banque
* $fac[4] : guichet
* $fac[5] : number
* $fac[6] : cle rib
* $fac[7] : amount
* $fac[8] : client nom
* $fac[2] : client id
*/
}
$ri = $bonprev->AddFacture($fac[0], $fac[2], $fac[8], $fac[7],
$fac[3], $fac[4], $fac[5], $fac[6]);
if ($ri <> 0)
{
$error++;
}
if (!$error)
{
/*
* Withdraw receipt
*/
/*
* Mise a jour des demandes
*
*/
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande";
$sql.= " SET traite = 1";
$sql.= ", date_traite = ".$this->db->idate(mktime());
$sql.= ", fk_prelevement_bons = ".$prev_id;
$sql.= " WHERE rowid = ".$fac[1];
dol_syslog("Debut prelevement - Nombre de factures ".sizeof($factures_prev));
dol_syslog("Bon-Prelevement::Create sql=".$sql, LOG_DEBUG);
if ($this->db->query($sql))
{
if (sizeof($factures_prev) > 0)
{
$bonprev->date_echeance = $datetimeprev;
$bonprev->reference_remise = $ref;
}
else
{
$error++;
dol_syslog("Erreur mise a jour des demandes");
dol_syslog($this->db->error());
}
$bonprev->numero_national_emetteur = $conf->global->PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR;
$bonprev->raison_sociale = $conf->global->PRELEVEMENT_RAISON_SOCIALE;
}
}
}
dol_syslog("Fin des paiements");
}
if (!$error)
{
/*
* Withdraw receipt
*/
dol_syslog("Debut prelevement - Nombre de factures ".sizeof($factures_prev));
if (sizeof($factures_prev) > 0)
{
$bonprev->date_echeance = $datetimeprev;
$bonprev->reference_remise = $ref;
$bonprev->numero_national_emetteur = $conf->global->PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR;
$bonprev->raison_sociale = $conf->global->PRELEVEMENT_RAISON_SOCIALE;
$bonprev->emetteur_code_banque = $conf->global->PRELEVEMENT_CODE_BANQUE;
$bonprev->emetteur_code_guichet = $conf->global->PRELEVEMENT_CODE_GUICHET;
$bonprev->emetteur_numero_compte = $conf->global->PRELEVEMENT_NUMERO_COMPTE;
$bonprev->emetteur_number_key = $conf->global->PRELEVEMENT_NUMBER_KEY;
$bonprev->emetteur_code_banque = $conf->global->PRELEVEMENT_CODE_BANQUE;
$bonprev->emetteur_code_guichet = $conf->global->PRELEVEMENT_CODE_GUICHET;
$bonprev->emetteur_numero_compte = $conf->global->PRELEVEMENT_NUMERO_COMPTE;
$bonprev->emetteur_number_key = $conf->global->PRELEVEMENT_NUMBER_KEY;
$bonprev->factures = $factures_prev_id;
$bonprev->factures = $factures_prev_id;
// Build file
$bonprev->generate();
}
dol_syslog( $filebonprev ) ;
dol_syslog("Fin prelevement");
}
//Build file
$bonprev->generate();
}
dol_syslog( $filebonprev ) ;
dol_syslog("Fin prelevement");
}
/*
* Mise a jour du total
*
*/
/*
* Update total
*
*/
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons";
$sql.= " SET amount = ".price2num($bonprev->total);
$sql.= " WHERE rowid = ".$prev_id;
$sql.= " AND entity = ".$conf->entity;
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons";
$sql.= " SET amount = ".price2num($bonprev->total);
$sql.= " WHERE rowid = ".$prev_id;
$sql.= " AND entity = ".$conf->entity;
dol_syslog("Bon-Prelevement::Create sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql);
if (! $resql)
{
$error++;
dol_syslog("Erreur mise a jour du total - $sql");
}
dol_syslog("Bon-Prelevement::Create sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql);
if (! $resql)
{
$error++;
dol_syslog("Erreur mise a jour du total - $sql");
}
/*
* Rollback ou Commit
*
*/
if (!$error)
{
$this->db->commit();
}
else
{
$this->db->rollback();
dol_syslog("Error",LOG_ERROR);
}
/*
* Rollback or Commit
*
*/
if (!$error)
{
$this->db->commit();
}
else
{
$this->db->rollback();
dol_syslog("Error",LOG_ERROR);
}
return sizeof($factures_prev);
}
else
{
return 0;
}
}
return sizeof($factures_prev);
}
else
{
return 0;
}
}
/**

View File

@ -102,8 +102,9 @@ AddBankRecordLong=Realitzar un registre manual fora d'una factura
ConciliatedBy=Conciliat per
DateConciliating=Data conciliació
BankLineConciliated=Registre conciliat
CustomerInvoicePayment=Pagament de client
CustomerInvoicePayment=Cobrament a client
SupplierInvoicePayment=Pagament a proveïdor
WithdrawalPayment=Cobrament de domiciliació
SocialContributionPayment=Pagament càrrega social
FinancialAccountJournal=Diari de tresoreria del compte
BankTransfer=Transferència bancària

View File

@ -104,6 +104,7 @@ DateConciliating=Reconcile date
BankLineConciliated=Transaction reconciled
CustomerInvoicePayment=Customer payment
SupplierInvoicePayment=Supplier payment
WithdrawalPayment=Withdrawal payment
SocialContributionPayment=Social contribution payment
FinancialAccountJournal=Financial account journal
BankTransfer=Bank transfer

View File

@ -102,8 +102,9 @@ AddBankRecordLong=Realizar un registro manual fuera de una factura
ConciliatedBy=Conciliado por
DateConciliating=Fecha conciliación
BankLineConciliated=Registro conciliado
CustomerInvoicePayment=Pago de cliente
CustomerInvoicePayment=Cobro a cliente
SupplierInvoicePayment=Pago a proveedor
WithdrawalPayment=Cobro de domiciliación
SocialContributionPayment=Pago carga social
FinancialAccountJournal=Diario de tesorería de la cuenta
BankTransfer=Transferencia bancaria

View File

@ -102,8 +102,9 @@ AddBankRecordLong=Realizar un registro manual fuera de una factura
ConciliatedBy=Conciliado por
DateConciliating=Fecha conciliación
BankLineConciliated=Registro conciliado
CustomerInvoicePayment=Pago de cliente
CustomerInvoicePayment=Cobro a cliente
SupplierInvoicePayment=Pago a proveedor
WithdrawalPayment=Cobro de domiciliación
SocialContributionPayment=Pago carga social
FinancialAccountJournal=Diario de tesorería de la cuenta
BankTransfer=Transferencia bancaria

View File

@ -104,6 +104,7 @@ DateConciliating=Date rapprochement
BankLineConciliated=Écriture rapprochée
CustomerInvoicePayment=Règlement client
SupplierInvoicePayment=Règlement fournisseur
WithdrawalPayment=Règlement bon de prélèvement
SocialContributionPayment=Règlement charge sociale
FinancialAccountJournal=Journal de trésorerie du compte
BankTransfer=Virement bancaire