FIX remove comment, calcul next date for recurring invoice, increment nb_gen_done

This commit is contained in:
phf 2016-02-12 15:55:55 +01:00
parent c4812abd62
commit 428a7e7042
3 changed files with 40 additions and 60 deletions

View File

@ -233,27 +233,6 @@ class FactureRec extends Facture
$sql.= ', p.code as mode_reglement_code, p.libelle as mode_reglement_libelle'; $sql.= ', p.code as mode_reglement_code, p.libelle as mode_reglement_libelle';
$sql.= ', c.code as cond_reglement_code, c.libelle as cond_reglement_libelle, c.libelle_facture as cond_reglement_libelle_doc'; $sql.= ', c.code as cond_reglement_code, c.libelle as cond_reglement_libelle, c.libelle_facture as cond_reglement_libelle_doc';
$sql.= ', el.fk_source'; $sql.= ', el.fk_source';
/*
$sql.= ', f.remise_percent, f.remise_absolue, f.remise';
$sql.= ', f.datef as df';
$sql.= ', f.date_lim_reglement as dlr';
$sql.= ', f.datec as datec';
$sql.= ', f.date_valid as datev';
$sql.= ', f.tms as datem';
$sql.= ', f.note_private, f.note_public, f.fk_statut, f.paye, f.close_code, f.close_note, f.fk_user_author, f.fk_user_valid, f.model_pdf';
$sql.= ', f.fk_facture_source';
$sql.= ', f.fk_mode_reglement, f.fk_cond_reglement, f.fk_projet, f.extraparams';
$sql.= ', f.situation_cycle_ref, f.situation_counter, f.situation_final';
$sql.= ', f.fk_account';
$sql.= ", f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva, f.multicurrency_total_ttc";
$sql.= ', p.code as mode_reglement_code, p.libelle as mode_reglement_libelle';
$sql.= ', c.code as cond_reglement_code, c.libelle as cond_reglement_libelle, c.libelle_facture as cond_reglement_libelle_doc';
$sql.= ', f.fk_incoterms, f.location_incoterms';
$sql.= ", i.libelle as libelle_incoterms";
*/
$sql.= ' FROM '.MAIN_DB_PREFIX.'facture_rec as f'; $sql.= ' FROM '.MAIN_DB_PREFIX.'facture_rec as f';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_payment_term as c ON f.fk_cond_reglement = c.rowid'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_payment_term as c ON f.fk_cond_reglement = c.rowid';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as p ON f.fk_mode_reglement = p.id'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as p ON f.fk_mode_reglement = p.id';
@ -599,7 +578,7 @@ class FactureRec extends Facture
function getNextDate() function getNextDate()
{ {
if (empty($this->date_when)) return false; if (empty($this->date_when)) return false;
return dol_time_plus_duree($this->date_when, $this->frequency, $this->unit_frequency); return dol_time_plus_duree(strtotime($this->date_when), $this->frequency, $this->unit_frequency);
} }
/** /**
@ -629,13 +608,18 @@ class FactureRec extends Facture
$facturerec->fetch($line->rowid); $facturerec->fetch($line->rowid);
$facture = new Facture($db); $facture = new Facture($db);
$result = $facture->createFromRec($user, $facturerec); $result = $facture->createFromRec($user, $facturerec);
// >0 create and validate if auto_validate // >0 create and validate if auto_validate
// =0 create but not validate if auto_validate // =0 create but not validate if auto_validate
// <0 broken // <0 broken
if ($result >= 0) $nb_create++; if ($result >= 0)
{
$next_date = $facturerec->getNextDate();
$facturerec->setNextDate($next_date,1);
$nb_create++;
}
} }
} }
@ -764,10 +748,11 @@ class FactureRec extends Facture
/** /**
* Update the next date of execution * Update the next date of execution
* *
* @param datetime $date date of execution (format timestamp) * @param datetime $date date of execution
* @return int <0 if KO, >0 if OK * @param int $increment_nb_gen_done 0 do nothing more, >0 increment nb_gen_done
* @return int <0 if KO, >0 if OK
*/ */
function setNextDate($date) function setNextDate($date, $increment_nb_gen_done=0)
{ {
if (! $this->table_element) if (! $this->table_element)
{ {
@ -777,6 +762,7 @@ class FactureRec extends Facture
$date = $this->db->idate($date); $date = $this->db->idate($date);
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
$sql.= ' SET date_when = "'.$date.'"'; $sql.= ' SET date_when = "'.$date.'"';
if ($increment_nb_gen_done>0) $sql.= ', nb_gen_done = nb_gen_done + 1';
$sql.= ' WHERE rowid = '.$this->id; $sql.= ' WHERE rowid = '.$this->id;
dol_syslog(get_class($this)."::setNextDate", LOG_DEBUG); dol_syslog(get_class($this)."::setNextDate", LOG_DEBUG);

View File

@ -922,47 +922,41 @@ class Facture extends CommonInvoice
/** /**
* Create a new invoice in database from facturerec * Create a new invoice in database from facturerec
* *
* @param User $user Object user that ask creation * @param User $user Object user that ask creation
* @return int <0 if KO, 0 if not validate, >0 if OK * @param FactureRec $facturerec Object facturerec source
* @return int <0 if KO, 0 if not validate, >0 if OK
*/ */
function createFromRec($user, $object) function createFromRec($user, $facturerec)
{ {
// Clean parameters // Clean parameters
if (! $this->type) $this->type = self::TYPE_STANDARD; $this->type = self::TYPE_STANDARD;
$this->ref_client=trim($this->ref_client);
$this->note_private=trim($this->note_private);
$this->note_public=trim($this->note_public);
//if (! $this->remise) $this->remise = 0;
if (! $this->mode_reglement_id) $this->mode_reglement_id = 0;
$this->brouillon = 1; $this->brouillon = 1;
// Charge facture source // Charge facture source
$facture=new Facture($object->db); $facture=new Facture($facturerec->db);
$facture->fk_facture_source = $object->fk_facture_source; $facture->socid = $facturerec->socid;
$facture->type = $object->type;
$facture->socid = $object->socid;
$facture->date = dol_mktime(12, 0, 0, date('m'), date('d'), date('Y')); $facture->date = dol_mktime(12, 0, 0, date('m'), date('d'), date('Y'));
$facture->note_public = $object->note_public; $facture->note_public = $facturerec->note_public;
$facture->note_private = $object->note_private; $facture->note_private = $facturerec->note_private;
$facture->ref_client = $object->ref_client; $facture->fk_project = $facturerec->fk_project;
$facture->modelpdf = $object->modelpdf; $facture->fk_account = $facturerec->fk_account;
$facture->fk_project = $object->fk_project; $facture->cond_reglement_id = $facturerec->cond_reglement_id;
$facture->cond_reglement_id = $object->cond_reglement_id; $facture->mode_reglement_id = $facturerec->mode_reglement_id;
$facture->mode_reglement_id = $object->mode_reglement_id;
$facture->remise_absolue = $object->remise_absolue;
$facture->remise_percent = $object->remise_percent;
$facture->fk_incoterms = $object->fk_incoterms;
$facture->location_incoterms= $object->location_incoterms;
$facture->lines = $object->lines; // Tableau des lignes de factures $new_date_lim_reglement = $facture->calculate_date_lim_reglement();
$facture->products = $object->lines; // Tant que products encore utilise $facture->date_lim_reglement = $new_date_lim_reglement;
$facture->remise_absolue = $facturerec->remise_absolue;
$facture->remise_percent = $facturerec->remise_percent;
$facture->lines = $facturerec->lines; // Tableau des lignes de factures
// Loop on each line of new invoice // Loop on each line of new invoice
foreach($facture->lines as $i => $line) foreach($facture->lines as $i => $line)
{ {
$facture->lines[$i]->fk_prev_id = $object->lines[$i]->rowid; $facture->lines[$i]->fk_prev_id = $facturerec->lines[$i]->rowid;
} }
dol_syslog(get_class($this)."::createFromRec socid=".$this->socid." nboflines=".count($facture->lines)); dol_syslog(get_class($this)."::createFromRec socid=".$this->socid." nboflines=".count($facture->lines));
@ -970,7 +964,7 @@ class Facture extends CommonInvoice
$facid = $facture->create($user); $facid = $facture->create($user);
if ($facid <= 0) return -1; if ($facid <= 0) return -1;
if ($object->auto_validate) if ($facturerec->auto_validate)
{ {
$result = $facture->validate($user); $result = $facture->validate($user);
if ($result<=0) return 0; if ($result<=0) return 0;

View File

@ -121,7 +121,8 @@ if ($action == 'add')
if ($object->create($user, $id) > 0) if ($object->create($user, $id) > 0)
{ {
$id = $object->id; $id = $object->id;
$action = ''; header("Location: " . $_SERVER['PHP_SELF'] . '?facid=' . $id);
exit;
} }
else else
{ {
@ -134,13 +135,12 @@ if ($action == 'add')
// Delete // Delete
if ($action == 'delete' && $user->rights->facture->supprimer) if ($action == 'delete' && $user->rights->facture->supprimer)
{ {
$object->fetch($id);
$object->delete(); $object->delete();
$id = 0 ; header("Location: " . $_SERVER['PHP_SELF'] );
exit;
} }
// Update field // Update field
// Set condition // Set condition
if ($action == 'setconditions' && $user->rights->facture->creer) if ($action == 'setconditions' && $user->rights->facture->creer)