Fix: Date was lost if error during submit.

This commit is contained in:
Laurent Destailleur 2014-03-20 00:05:20 +01:00
parent 4bf822225e
commit a9aaac8e15

View File

@ -236,7 +236,7 @@ else if ($action == 'set_thirdparty' && $user->rights->facture->creer) {
else if ($action == 'classin' && $user->rights->facture->creer) { else if ($action == 'classin' && $user->rights->facture->creer) {
$object->fetch($id); $object->fetch($id);
$object->setProject($_POST ['projectid']); $object->setProject($_POST['projectid']);
} }
else if ($action == 'setmode' && $user->rights->facture->creer) { else if ($action == 'setmode' && $user->rights->facture->creer) {
@ -244,10 +244,12 @@ else if ($action == 'setmode' && $user->rights->facture->creer) {
$result = $object->setPaymentMethods(GETPOST('mode_reglement_id', 'int')); $result = $object->setPaymentMethods(GETPOST('mode_reglement_id', 'int'));
if ($result < 0) if ($result < 0)
dol_print_error($db, $object->error); dol_print_error($db, $object->error);
} else if ($action == 'setinvoicedate' && $user->rights->facture->creer) { }
else if ($action == 'setinvoicedate' && $user->rights->facture->creer) {
$object->fetch($id); $object->fetch($id);
$old_date_lim_reglement = $object->date_lim_reglement; $old_date_lim_reglement = $object->date_lim_reglement;
$object->date = dol_mktime(12, 0, 0, $_POST ['invoicedatemonth'], $_POST ['invoicedateday'], $_POST ['invoicedateyear']); $object->date = dol_mktime(12, 0, 0, $_POST['invoicedatemonth'], $_POST['invoicedateday'], $_POST['invoicedateyear']);
$new_date_lim_reglement = $object->calculate_date_lim_reglement(); $new_date_lim_reglement = $object->calculate_date_lim_reglement();
if ($new_date_lim_reglement > $old_date_lim_reglement) if ($new_date_lim_reglement > $old_date_lim_reglement)
$object->date_lim_reglement = $new_date_lim_reglement; $object->date_lim_reglement = $new_date_lim_reglement;
@ -256,7 +258,9 @@ else if ($action == 'setmode' && $user->rights->facture->creer) {
$result = $object->update($user); $result = $object->update($user);
if ($result < 0) if ($result < 0)
dol_print_error($db, $object->error); dol_print_error($db, $object->error);
} else if ($action == 'setconditions' && $user->rights->facture->creer) { }
else if ($action == 'setconditions' && $user->rights->facture->creer) {
$object->fetch($id); $object->fetch($id);
$object->cond_reglement_code = 0; // To clean property $object->cond_reglement_code = 0; // To clean property
$object->cond_reglement_id = 0; // To clean property $object->cond_reglement_id = 0; // To clean property
@ -273,9 +277,11 @@ else if ($action == 'setmode' && $user->rights->facture->creer) {
$result = $object->update($user); $result = $object->update($user);
if ($result < 0) if ($result < 0)
dol_print_error($db, $object->error); dol_print_error($db, $object->error);
} else if ($action == 'setpaymentterm' && $user->rights->facture->creer) { }
else if ($action == 'setpaymentterm' && $user->rights->facture->creer) {
$object->fetch($id); $object->fetch($id);
$object->date_lim_reglement = dol_mktime(12, 0, 0, $_POST ['paymenttermmonth'], $_POST ['paymenttermday'], $_POST ['paymenttermyear']); $object->date_lim_reglement = dol_mktime(12, 0, 0, $_POST['paymenttermmonth'], $_POST['paymenttermday'], $_POST['paymenttermyear']);
if ($object->date_lim_reglement < $object->date) { if ($object->date_lim_reglement < $object->date) {
$object->date_lim_reglement = $object->calculate_date_lim_reglement(); $object->date_lim_reglement = $object->calculate_date_lim_reglement();
setEventMessage($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"), 'warnings'); setEventMessage($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"), 'warnings');
@ -283,22 +289,28 @@ else if ($action == 'setmode' && $user->rights->facture->creer) {
$result = $object->update($user); $result = $object->update($user);
if ($result < 0) if ($result < 0)
dol_print_error($db, $object->error); dol_print_error($db, $object->error);
} else if ($action == 'setrevenuestamp' && $user->rights->facture->creer) { }
else if ($action == 'setrevenuestamp' && $user->rights->facture->creer) {
$object->fetch($id); $object->fetch($id);
$object->revenuestamp = GETPOST('revenuestamp'); $object->revenuestamp = GETPOST('revenuestamp');
$result = $object->update($user); $result = $object->update($user);
$object->update_price(1); $object->update_price(1);
if ($result < 0) if ($result < 0)
dol_print_error($db, $object->error); dol_print_error($db, $object->error);
} else if ($action == 'setremisepercent' && $user->rights->facture->creer) { }
else if ($action == 'setremisepercent' && $user->rights->facture->creer) {
$object->fetch($id); $object->fetch($id);
$result = $object->set_remise($user, $_POST ['remise_percent']); $result = $object->set_remise($user, $_POST['remise_percent']);
} else if ($action == "setabsolutediscount" && $user->rights->facture->creer) { }
else if ($action == "setabsolutediscount" && $user->rights->facture->creer) {
// POST[remise_id] ou POST[remise_id_for_payment] // POST[remise_id] ou POST[remise_id_for_payment]
if (! empty($_POST ["remise_id"])) { if (! empty($_POST["remise_id"])) {
$ret = $object->fetch($id); $ret = $object->fetch($id);
if ($ret > 0) { if ($ret > 0) {
$result = $object->insert_discount($_POST ["remise_id"]); $result = $object->insert_discount($_POST["remise_id"]);
if ($result < 0) { if ($result < 0) {
$mesgs [] = '<div class="error">' . $object->error . '</div>'; $mesgs [] = '<div class="error">' . $object->error . '</div>';
} }
@ -306,10 +318,10 @@ else if ($action == 'setmode' && $user->rights->facture->creer) {
dol_print_error($db, $object->error); dol_print_error($db, $object->error);
} }
} }
if (! empty($_POST ["remise_id_for_payment"])) { if (! empty($_POST["remise_id_for_payment"])) {
require_once DOL_DOCUMENT_ROOT . '/core/class/discount.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/discount.class.php';
$discount = new DiscountAbsolute($db); $discount = new DiscountAbsolute($db);
$discount->fetch($_POST ["remise_id_for_payment"]); $discount->fetch($_POST["remise_id_for_payment"]);
$result = $discount->link_to_invoice(0, $id); $result = $discount->link_to_invoice(0, $id);
if ($result < 0) { if ($result < 0) {
@ -320,7 +332,7 @@ else if ($action == 'setmode' && $user->rights->facture->creer) {
else if ($action == 'set_ref_client' && $user->rights->facture->creer) { else if ($action == 'set_ref_client' && $user->rights->facture->creer) {
$object->fetch($id); $object->fetch($id);
$object->set_ref_client($_POST ['ref_client']); $object->set_ref_client($_POST['ref_client']);
} }
// Classify to validated // Classify to validated
@ -464,8 +476,8 @@ else if ($action == 'confirm_paid' && $confirm == 'yes' && $user->rights->factur
} // Classif "paid partialy" } // Classif "paid partialy"
else if ($action == 'confirm_paid_partially' && $confirm == 'yes' && $user->rights->facture->paiement) { else if ($action == 'confirm_paid_partially' && $confirm == 'yes' && $user->rights->facture->paiement) {
$object->fetch($id); $object->fetch($id);
$close_code = $_POST ["close_code"]; $close_code = $_POST["close_code"];
$close_note = $_POST ["close_note"]; $close_note = $_POST["close_note"];
if ($close_code) { if ($close_code) {
$result = $object->set_paid($user, $close_code, $close_note); $result = $object->set_paid($user, $close_code, $close_note);
} else { } else {
@ -474,8 +486,8 @@ else if ($action == 'confirm_paid_partially' && $confirm == 'yes' && $user->righ
} // Classify "abandoned" } // Classify "abandoned"
else if ($action == 'confirm_canceled' && $confirm == 'yes') { else if ($action == 'confirm_canceled' && $confirm == 'yes') {
$object->fetch($id); $object->fetch($id);
$close_code = $_POST ["close_code"]; $close_code = $_POST["close_code"];
$close_note = $_POST ["close_note"]; $close_note = $_POST["close_note"];
if ($close_code) { if ($close_code) {
$result = $object->set_canceled($user, $close_code, $close_note); $result = $object->set_canceled($user, $close_code, $close_note);
} else { } else {
@ -564,9 +576,9 @@ else if ($action == 'confirm_converttoreduc' && $confirm == 'yes' && $user->righ
/* /*
* Insert new invoice in database * Insert new invoice in database
*/ */
else if ($action == 'add' && $user->rights->facture->creer) { else if ($action == 'add' && $user->rights->facture->creer)
if ($socid > 0) {
$object->socid = GETPOST('socid', 'int'); if ($socid > 0) $object->socid = GETPOST('socid', 'int');
$db->begin(); $db->begin();
@ -575,41 +587,41 @@ else if ($action == 'add' && $user->rights->facture->creer) {
// Fill array 'array_options' with data from add form // Fill array 'array_options' with data from add form
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element); $extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$ret = $extrafields->setOptionalsFromPost($extralabels, $object); $ret = $extrafields->setOptionalsFromPost($extralabels, $object);
if ($ret < 0) if ($ret < 0) $error ++;
$error ++;
// Replacement invoice // Replacement invoice
if ($_POST ['type'] == 1) { if ($_POST['type'] == Facture::TYPE_REPLACEMENT)
$datefacture = dol_mktime(12, 0, 0, $_POST ['remonth'], $_POST ['reday'], $_POST ['reyear']); {
$datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
if (empty($datefacture)) { if (empty($datefacture)) {
$error ++; $error ++;
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors'); setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors');
} }
if (! ($_POST ['fac_replacement'] > 0)) { if (! ($_POST['fac_replacement'] > 0)) {
$error ++; $error ++;
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ReplaceInvoice")), 'errors'); setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ReplaceInvoice")), 'errors');
} }
if (! $error) { if (! $error) {
// This is a replacement invoice // This is a replacement invoice
$result = $object->fetch($_POST ['fac_replacement']); $result = $object->fetch($_POST['fac_replacement']);
$object->fetch_thirdparty(); $object->fetch_thirdparty();
$object->date = $datefacture; $object->date = $datefacture;
$object->note_public = trim($_POST ['note_public']); $object->note_public = trim($_POST['note_public']);
$object->note = trim($_POST ['note']); $object->note = trim($_POST['note']);
$object->ref_client = $_POST ['ref_client']; $object->ref_client = $_POST['ref_client'];
$object->ref_int = $_POST ['ref_int']; $object->ref_int = $_POST['ref_int'];
$object->modelpdf = $_POST ['model']; $object->modelpdf = $_POST['model'];
$object->fk_project = $_POST ['projectid']; $object->fk_project = $_POST['projectid'];
$object->cond_reglement_id = $_POST ['cond_reglement_id']; $object->cond_reglement_id = $_POST['cond_reglement_id'];
$object->mode_reglement_id = $_POST ['mode_reglement_id']; $object->mode_reglement_id = $_POST['mode_reglement_id'];
$object->remise_absolue = $_POST ['remise_absolue']; $object->remise_absolue = $_POST['remise_absolue'];
$object->remise_percent = $_POST ['remise_percent']; $object->remise_percent = $_POST['remise_percent'];
// Proprietes particulieres a facture de remplacement // Proprietes particulieres a facture de remplacement
$object->fk_facture_source = $_POST ['fac_replacement']; $object->fk_facture_source = $_POST['fac_replacement'];
$object->type = Facture::TYPE_REPLACEMENT; $object->type = Facture::TYPE_REPLACEMENT;
$id = $object->createFromCurrent($user); $id = $object->createFromCurrent($user);
@ -619,40 +631,44 @@ else if ($action == 'add' && $user->rights->facture->creer) {
} }
// Credit note invoice // Credit note invoice
if ($_POST ['type'] == 2) { if ($_POST['type'] == Facture::TYPE_CREDIT_NOTE)
if (! $_POST ['fac_avoir'] > 0) { {
if (! ($_POST['fac_avoir'] > 0))
{
$error ++; $error ++;
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CorrectInvoice")), 'errors'); setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CorrectInvoice")), 'errors');
} }
$datefacture = dol_mktime(12, 0, 0, $_POST ['remonth'], $_POST ['reday'], $_POST ['reyear']); $datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
if (empty($datefacture)) { if (empty($datefacture))
{
$error ++; $error ++;
setEventMessage($langs->trans("ErrorFieldRequired", $langs->trans("Date")), 'errors'); setEventMessage($langs->trans("ErrorFieldRequired", $langs->trans("Date")), 'errors');
} }
if (! $error) { if (! $error)
{
// Si facture avoir // Si facture avoir
$datefacture = dol_mktime(12, 0, 0, $_POST ['remonth'], $_POST ['reday'], $_POST ['reyear']); $datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
// $result=$object->fetch($_POST['fac_avoir']); // $result=$object->fetch($_POST['fac_avoir']);
$object->socid = GETPOST('socid', 'int'); $object->socid = GETPOST('socid', 'int');
$object->number = $_POST ['facnumber']; $object->number = $_POST['facnumber'];
$object->date = $datefacture; $object->date = $datefacture;
$object->note_public = trim($_POST ['note_public']); $object->note_public = trim($_POST['note_public']);
$object->note = trim($_POST ['note']); $object->note = trim($_POST['note']);
$object->ref_client = $_POST ['ref_client']; $object->ref_client = $_POST['ref_client'];
$object->ref_int = $_POST ['ref_int']; $object->ref_int = $_POST['ref_int'];
$object->modelpdf = $_POST ['model']; $object->modelpdf = $_POST['model'];
$object->fk_project = $_POST ['projectid']; $object->fk_project = $_POST['projectid'];
$object->cond_reglement_id = 0; $object->cond_reglement_id = 0;
$object->mode_reglement_id = $_POST ['mode_reglement_id']; $object->mode_reglement_id = $_POST['mode_reglement_id'];
$object->remise_absolue = $_POST ['remise_absolue']; $object->remise_absolue = $_POST['remise_absolue'];
$object->remise_percent = $_POST ['remise_percent']; $object->remise_percent = $_POST['remise_percent'];
// Proprietes particulieres a facture avoir // Proprietes particulieres a facture avoir
$object->fk_facture_source = $_POST ['fac_avoir']; $object->fk_facture_source = $_POST['fac_avoir'];
$object->type = Facture::TYPE_CREDIT_NOTE; $object->type = Facture::TYPE_CREDIT_NOTE;
$id = $object->create($user); $id = $object->create($user);
@ -701,20 +717,20 @@ else if ($action == 'add' && $user->rights->facture->creer) {
/* /*
TODO delete TODO delete
for($i = 1; $i <= $NBLINES; $i ++) { for($i = 1; $i <= $NBLINES; $i ++) {
if ($_POST ['idprod' . $i]) { if ($_POST['idprod' . $i]) {
$product = new Product($db); $product = new Product($db);
$product->fetch($_POST ['idprod' . $i]); $product->fetch($_POST['idprod' . $i]);
$startday = dol_mktime(12, 0, 0, $_POST ['date_start' . $i . 'month'], $_POST ['date_start' . $i . 'day'], $_POST ['date_start' . $i . 'year']); $startday = dol_mktime(12, 0, 0, $_POST['date_start' . $i . 'month'], $_POST['date_start' . $i . 'day'], $_POST['date_start' . $i . 'year']);
$endday = dol_mktime(12, 0, 0, $_POST ['date_end' . $i . 'month'], $_POST ['date_end' . $i . 'day'], $_POST ['date_end' . $i . 'year']); $endday = dol_mktime(12, 0, 0, $_POST['date_end' . $i . 'month'], $_POST['date_end' . $i . 'day'], $_POST['date_end' . $i . 'year']);
$result = $object->addline($product->description, $product->price, $_POST ['qty' . $i], $product->tva_tx, $product->localtax1_tx, $product->localtax2_tx, $_POST ['idprod' . $i], $_POST ['remise_percent' . $i], $startday, $endday, 0, 0, '', $product->price_base_type, $product->price_ttc, $product->type); $result = $object->addline($product->description, $product->price, $_POST['qty' . $i], $product->tva_tx, $product->localtax1_tx, $product->localtax2_tx, $_POST['idprod' . $i], $_POST['remise_percent' . $i], $startday, $endday, 0, 0, '', $product->price_base_type, $product->price_ttc, $product->type);
} }
}*/ }*/
} }
} }
// Standard invoice or Deposit invoice created from a Predefined invoice // Standard invoice or Deposit invoice created from a Predefined invoice
if (($_POST ['type'] == 0 || $_POST ['type'] == 3) && $_POST ['fac_rec'] > 0) { if (($_POST['type'] == 0 || $_POST['type'] == 3) && $_POST['fac_rec'] > 0) {
$datefacture = dol_mktime(12, 0, 0, $_POST ['remonth'], $_POST ['reday'], $_POST ['reyear']); $datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
if (empty($datefacture)) { if (empty($datefacture)) {
$error ++; $error ++;
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors'); setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors');
@ -722,30 +738,30 @@ else if ($action == 'add' && $user->rights->facture->creer) {
if (! $error) { if (! $error) {
$object->socid = GETPOST('socid', 'int'); $object->socid = GETPOST('socid', 'int');
$object->type = $_POST ['type']; $object->type = $_POST['type'];
$object->number = $_POST ['facnumber']; $object->number = $_POST['facnumber'];
$object->date = $datefacture; $object->date = $datefacture;
$object->note_public = trim($_POST ['note_public']); $object->note_public = trim($_POST['note_public']);
$object->note_private = trim($_POST ['note_private']); $object->note_private = trim($_POST['note_private']);
$object->ref_client = $_POST ['ref_client']; $object->ref_client = $_POST['ref_client'];
$object->ref_int = $_POST ['ref_int']; $object->ref_int = $_POST['ref_int'];
$object->modelpdf = $_POST ['model']; $object->modelpdf = $_POST['model'];
// Source facture // Source facture
$object->fac_rec = $_POST ['fac_rec']; $object->fac_rec = $_POST['fac_rec'];
$id = $object->create($user); $id = $object->create($user);
} }
} }
// Standard or deposit or proforma invoice // Standard or deposit or proforma invoice
if (($_POST ['type'] == 0 || $_POST ['type'] == 3 || $_POST ['type'] == 4) && $_POST ['fac_rec'] <= 0) { if (($_POST['type'] == 0 || $_POST['type'] == 3 || $_POST['type'] == 4) && $_POST['fac_rec'] <= 0) {
if (GETPOST('socid', 'int') < 1) { if (GETPOST('socid', 'int') < 1) {
$error ++; $error ++;
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Customer")), 'errors'); setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Customer")), 'errors');
} }
$datefacture = dol_mktime(12, 0, 0, $_POST ['remonth'], $_POST ['reday'], $_POST ['reyear']); $datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
if (empty($datefacture)) { if (empty($datefacture)) {
$error ++; $error ++;
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors'); setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors');
@ -755,26 +771,26 @@ else if ($action == 'add' && $user->rights->facture->creer) {
// Si facture standard // Si facture standard
$object->socid = GETPOST('socid', 'int'); $object->socid = GETPOST('socid', 'int');
$object->type = GETPOST('type'); $object->type = GETPOST('type');
$object->number = $_POST ['facnumber']; $object->number = $_POST['facnumber'];
$object->date = $datefacture; $object->date = $datefacture;
$object->note_public = trim($_POST ['note_public']); $object->note_public = trim($_POST['note_public']);
$object->note_private = trim($_POST ['note_private']); $object->note_private = trim($_POST['note_private']);
$object->ref_client = $_POST ['ref_client']; $object->ref_client = $_POST['ref_client'];
$object->ref_int = $_POST ['ref_int']; $object->ref_int = $_POST['ref_int'];
$object->modelpdf = $_POST ['model']; $object->modelpdf = $_POST['model'];
$object->fk_project = $_POST ['projectid']; $object->fk_project = $_POST['projectid'];
$object->cond_reglement_id = ($_POST ['type'] == 3 ? 1 : $_POST ['cond_reglement_id']); $object->cond_reglement_id = ($_POST['type'] == 3 ? 1 : $_POST['cond_reglement_id']);
$object->mode_reglement_id = $_POST ['mode_reglement_id']; $object->mode_reglement_id = $_POST['mode_reglement_id'];
$object->amount = $_POST ['amount']; $object->amount = $_POST['amount'];
$object->remise_absolue = $_POST ['remise_absolue']; $object->remise_absolue = $_POST['remise_absolue'];
$object->remise_percent = $_POST ['remise_percent']; $object->remise_percent = $_POST['remise_percent'];
$object->fetch_thirdparty(); $object->fetch_thirdparty();
// If creation from another object of another module (Example: origin=propal, originid=1) // If creation from another object of another module (Example: origin=propal, originid=1)
if ($_POST ['origin'] && $_POST ['originid']) { if ($_POST['origin'] && $_POST['originid']) {
// Parse element/subelement (ex: project_task) // Parse element/subelement (ex: project_task)
$element = $subelement = $_POST ['origin']; $element = $subelement = $_POST['origin'];
if (preg_match('/^([^_]+)_([^_]+)/i', $_POST ['origin'], $regs)) { if (preg_match('/^([^_]+)_([^_]+)/i', $_POST['origin'], $regs)) {
$element = $regs [1]; $element = $regs [1];
$subelement = $regs [2]; $subelement = $regs [2];
} }
@ -797,20 +813,20 @@ else if ($action == 'add' && $user->rights->facture->creer) {
$element = $subelement = 'expedition'; $element = $subelement = 'expedition';
} }
$object->origin = $_POST ['origin']; $object->origin = $_POST['origin'];
$object->origin_id = $_POST ['originid']; $object->origin_id = $_POST['originid'];
// Possibility to add external linked objects with hooks // Possibility to add external linked objects with hooks
$object->linked_objects [$object->origin] = $object->origin_id; $object->linked_objects [$object->origin] = $object->origin_id;
if (is_array($_POST ['other_linked_objects']) && ! empty($_POST ['other_linked_objects'])) { if (is_array($_POST['other_linked_objects']) && ! empty($_POST['other_linked_objects'])) {
$object->linked_objects = array_merge($object->linked_objects, $_POST ['other_linked_objects']); $object->linked_objects = array_merge($object->linked_objects, $_POST['other_linked_objects']);
} }
$id = $object->create($user); $id = $object->create($user);
if ($id > 0) { if ($id > 0) {
// If deposit invoice // If deposit invoice
if ($_POST ['type'] == 3) { if ($_POST['type'] == 3) {
$typeamount = GETPOST('typedeposit', 'alpha'); $typeamount = GETPOST('typedeposit', 'alpha');
$valuedeposit = GETPOST('valuedeposit', 'int'); $valuedeposit = GETPOST('valuedeposit', 'int');
@ -980,12 +996,12 @@ else if ($action == 'add' && $user->rights->facture->creer) {
$id = $object->create($user); $id = $object->create($user);
for($i = 1; $i <= $NBLINES; $i ++) { for($i = 1; $i <= $NBLINES; $i ++) {
if ($_POST ['idprod' . $i]) { if ($_POST['idprod' . $i]) {
$product = new Product($db); $product = new Product($db);
$product->fetch($_POST ['idprod' . $i]); $product->fetch($_POST['idprod' . $i]);
$startday = dol_mktime(12, 0, 0, $_POST ['date_start' . $i . 'month'], $_POST ['date_start' . $i . 'day'], $_POST ['date_start' . $i . 'year']); $startday = dol_mktime(12, 0, 0, $_POST['date_start' . $i . 'month'], $_POST['date_start' . $i . 'day'], $_POST['date_start' . $i . 'year']);
$endday = dol_mktime(12, 0, 0, $_POST ['date_end' . $i . 'month'], $_POST ['date_end' . $i . 'day'], $_POST ['date_end' . $i . 'year']); $endday = dol_mktime(12, 0, 0, $_POST['date_end' . $i . 'month'], $_POST['date_end' . $i . 'day'], $_POST['date_end' . $i . 'year']);
$result = $object->addline($product->description, $product->price, $_POST ['qty' . $i], $product->tva_tx, $product->localtax1_tx, $product->localtax2_tx, $_POST ['idprod' . $i], $_POST ['remise_percent' . $i], $startday, $endday, 0, 0, '', $product->price_base_type, $product->price_ttc, $product->type); $result = $object->addline($product->description, $product->price, $_POST['qty' . $i], $product->tva_tx, $product->localtax1_tx, $product->localtax2_tx, $_POST['idprod' . $i], $_POST['remise_percent' . $i], $startday, $endday, 0, 0, '', $product->price_base_type, $product->price_ttc, $product->type);
} }
} }
} }
@ -993,40 +1009,47 @@ else if ($action == 'add' && $user->rights->facture->creer) {
} }
// End of object creation, we show it // End of object creation, we show it
if ($id > 0 && ! $error) { if ($id > 0 && ! $error)
{
$db->commit(); $db->commit();
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id); header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id);
exit(); exit();
} else { }
else
{
$db->rollback(); $db->rollback();
$action = 'create'; $action = 'create';
$_GET ["origin"] = $_POST ["origin"]; $_GET ["origin"] = $_POST["origin"];
$_GET ["originid"] = $_POST ["originid"]; $_GET ["originid"] = $_POST["originid"];
$mesgs [] = '<div class="error">' . $object->error . '</div>'; $mesgs [] = '<div class="error">' . $object->error . '</div>';
} }
} }
// Add a new line // Add a new line
else if (($action == 'addline' || $action == 'addline_predef') && $user->rights->facture->creer) { else if (($action == 'addline' || $action == 'addline_predef') && $user->rights->facture->creer)
{
$langs->load('errors'); $langs->load('errors');
$error = 0; $error = 0;
// Set if we used free entry or predefined product // Set if we used free entry or predefined product
if (GETPOST('addline_libre')) { if (GETPOST('addline_libre'))
{
$predef = ''; $predef = '';
$idprod = 0; $idprod = 0;
$product_desc = (GETPOST('dp_desc') ? GETPOST('dp_desc') : ''); $product_desc = (GETPOST('dp_desc') ? GETPOST('dp_desc') : '');
$price_ht = GETPOST('price_ht'); $price_ht = GETPOST('price_ht');
$tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); $tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0);
} }
if (GETPOST('addline_predefined')) { if (GETPOST('addline_predefined'))
{
$predef = (($conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : ''); $predef = (($conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : '');
$idprod = GETPOST('idprod', 'int'); $idprod = GETPOST('idprod', 'int');
$product_desc = (GETPOST('product_desc') ? GETPOST('product_desc') : (GETPOST('np_desc') ? GETPOST('np_desc') : '')); $product_desc = (GETPOST('product_desc') ? GETPOST('product_desc') : (GETPOST('np_desc') ? GETPOST('np_desc') : ''));
$price_ht = ''; $price_ht = '';
$tva_tx = ''; $tva_tx = '';
} }
if (GETPOST('usenewaddlineform')) { // TODO Remove this if (GETPOST('usenewaddlineform')) // TODO Remove this
{
$idprod = GETPOST('idprod', 'int'); $idprod = GETPOST('idprod', 'int');
$product_desc = (GETPOST('product_desc') ? GETPOST('product_desc') : (GETPOST('np_desc') ? GETPOST('np_desc') : (GETPOST('dp_desc') ? GETPOST('dp_desc') : ''))); $product_desc = (GETPOST('product_desc') ? GETPOST('product_desc') : (GETPOST('np_desc') ? GETPOST('np_desc') : (GETPOST('dp_desc') ? GETPOST('dp_desc') : '')));
$price_ht = GETPOST('price_ht'); $price_ht = GETPOST('price_ht');
@ -1043,7 +1066,7 @@ else if (($action == 'addline' || $action == 'addline_predef') && $user->rights-
if (is_array($extralabelsline)) { if (is_array($extralabelsline)) {
// Get extra fields // Get extra fields
foreach ($extralabelsline as $key => $value) { foreach ($extralabelsline as $key => $value) {
unset($_POST ["options_" . $key . $predef]); unset($_POST["options_" . $key . $predef]);
} }
} }
@ -1235,29 +1258,29 @@ else if (($action == 'addline' || $action == 'addline_predef') && $user->rights-
facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
} }
unset($_POST ['qty']); unset($_POST['qty']);
unset($_POST ['type']); unset($_POST['type']);
unset($_POST ['remise_percent']); unset($_POST['remise_percent']);
unset($_POST ['price_ht']); unset($_POST['price_ht']);
unset($_POST ['price_ttc']); unset($_POST['price_ttc']);
unset($_POST ['tva_tx']); unset($_POST['tva_tx']);
unset($_POST ['product_ref']); unset($_POST['product_ref']);
unset($_POST ['product_label']); unset($_POST['product_label']);
unset($_POST ['product_desc']); unset($_POST['product_desc']);
unset($_POST ['fournprice']); unset($_POST['fournprice']);
unset($_POST ['buying_price']); unset($_POST['buying_price']);
unset($_POST ['np_marginRate']); unset($_POST['np_marginRate']);
unset($_POST ['np_markRate']); unset($_POST['np_markRate']);
unset($_POST ['dp_desc']); unset($_POST['dp_desc']);
unset($_POST ['idprod']); unset($_POST['idprod']);
unset($_POST ['qty_predef']); unset($_POST['qty_predef']);
unset($_POST ['remise_percent_predef']); unset($_POST['remise_percent_predef']);
unset($_POST ['fournprice_predef']); unset($_POST['fournprice_predef']);
unset($_POST ['buying_price_predef']); unset($_POST['buying_price_predef']);
unset($_POST ['np_marginRate_predef']); unset($_POST['np_marginRate_predef']);
unset($_POST ['np_markRate_predef']); unset($_POST['np_markRate_predef']);
unset($_POST ['np_desc']); unset($_POST['np_desc']);
} else { } else {
setEventMessage($object->error, 'errors'); setEventMessage($object->error, 'errors');
} }
@ -1303,7 +1326,7 @@ elseif ($action == 'updateligne' && $user->rights->facture->creer && ! GETPOST('
if (is_array($extralabelsline)) { if (is_array($extralabelsline)) {
// Get extra fields // Get extra fields
foreach ($extralabelsline as $key => $value) { foreach ($extralabelsline as $key => $value) {
unset($_POST ["options_" . $key]); unset($_POST["options_" . $key]);
} }
} }
@ -1359,25 +1382,25 @@ elseif ($action == 'updateligne' && $user->rights->facture->creer && ! GETPOST('
facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); facture_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
} }
unset($_POST ['qty']); unset($_POST['qty']);
unset($_POST ['type']); unset($_POST['type']);
unset($_POST ['productid']); unset($_POST['productid']);
unset($_POST ['remise_percent']); unset($_POST['remise_percent']);
unset($_POST ['price_ht']); unset($_POST['price_ht']);
unset($_POST ['price_ttc']); unset($_POST['price_ttc']);
unset($_POST ['tva_tx']); unset($_POST['tva_tx']);
unset($_POST ['product_ref']); unset($_POST['product_ref']);
unset($_POST ['product_label']); unset($_POST['product_label']);
unset($_POST ['product_desc']); unset($_POST['product_desc']);
unset($_POST ['fournprice']); unset($_POST['fournprice']);
unset($_POST ['buying_price']); unset($_POST['buying_price']);
} else { } else {
setEventMessage($object->error, 'errors'); setEventMessage($object->error, 'errors');
} }
} }
} }
else if ($action == 'updateligne' && $user->rights->facture->creer && $_POST ['cancel'] == $langs->trans('Cancel')) { else if ($action == 'updateligne' && $user->rights->facture->creer && $_POST['cancel'] == $langs->trans('Cancel')) {
header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id); // Pour reaffichage de la fiche en cours d'edition header('Location: ' . $_SERVER ["PHP_SELF"] . '?facid=' . $id); // Pour reaffichage de la fiche en cours d'edition
exit(); exit();
} }
@ -1452,7 +1475,7 @@ if (GETPOST('addfile')) {
/* /*
* Remove file in email form * Remove file in email form
*/ */
if (! empty($_POST ['removedfile'])) { if (! empty($_POST['removedfile'])) {
require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
// Set tmp user directory // Set tmp user directory
@ -1460,14 +1483,14 @@ if (! empty($_POST ['removedfile'])) {
$upload_dir_tmp = $vardir . '/temp'; $upload_dir_tmp = $vardir . '/temp';
// TODO Delete only files that was uploaded from email form // TODO Delete only files that was uploaded from email form
dol_remove_file_process($_POST ['removedfile'], 0); dol_remove_file_process($_POST['removedfile'], 0);
$action = 'presend'; $action = 'presend';
} }
/* /*
* Send mail * Send mail
*/ */
if (($action == 'send' || $action == 'relance') && ! $_POST ['addfile'] && ! $_POST ['removedfile'] && ! $_POST ['cancel']) { if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_POST['removedfile'] && ! $_POST['cancel']) {
$langs->load('mails'); $langs->load('mails');
$actiontypecode = ''; $actiontypecode = '';
@ -1484,35 +1507,35 @@ if (($action == 'send' || $action == 'relance') && ! $_POST ['addfile'] && ! $_P
// if (is_readable($file)) // if (is_readable($file))
// { // {
if ($_POST ['sendto']) { if ($_POST['sendto']) {
// Le destinataire a ete fourni via le champ libre // Le destinataire a ete fourni via le champ libre
$sendto = $_POST ['sendto']; $sendto = $_POST['sendto'];
$sendtoid = 0; $sendtoid = 0;
} elseif ($_POST ['receiver'] != '-1') { } elseif ($_POST['receiver'] != '-1') {
// Recipient was provided from combo list // Recipient was provided from combo list
if ($_POST ['receiver'] == 'thirdparty') // Id of third party if ($_POST['receiver'] == 'thirdparty') // Id of third party
{ {
$sendto = $object->client->email; $sendto = $object->client->email;
$sendtoid = 0; $sendtoid = 0;
} else // Id du contact } else // Id du contact
{ {
$sendto = $object->client->contact_get_property($_POST ['receiver'], 'email'); $sendto = $object->client->contact_get_property($_POST['receiver'], 'email');
$sendtoid = $_POST ['receiver']; $sendtoid = $_POST['receiver'];
} }
} }
if (dol_strlen($sendto)) { if (dol_strlen($sendto)) {
$langs->load("commercial"); $langs->load("commercial");
$from = $_POST ['fromname'] . ' <' . $_POST ['frommail'] . '>'; $from = $_POST['fromname'] . ' <' . $_POST['frommail'] . '>';
$replyto = $_POST ['replytoname'] . ' <' . $_POST ['replytomail'] . '>'; $replyto = $_POST['replytoname'] . ' <' . $_POST['replytomail'] . '>';
$message = $_POST ['message']; $message = $_POST['message'];
$sendtocc = $_POST ['sendtocc']; $sendtocc = $_POST['sendtocc'];
$deliveryreceipt = $_POST ['deliveryreceipt']; $deliveryreceipt = $_POST['deliveryreceipt'];
if ($action == 'send') { if ($action == 'send') {
if (dol_strlen($_POST ['subject'])) if (dol_strlen($_POST['subject']))
$subject = $_POST ['subject']; $subject = $_POST['subject'];
else else
$subject = $langs->transnoentities('Bill') . ' ' . $object->ref; $subject = $langs->transnoentities('Bill') . ' ' . $object->ref;
$actiontypecode = 'AC_FAC'; $actiontypecode = 'AC_FAC';
@ -1525,8 +1548,8 @@ if (($action == 'send' || $action == 'relance') && ! $_POST ['addfile'] && ! $_P
// $actionmsg2=$langs->transnoentities('Action'.$actiontypecode); // $actionmsg2=$langs->transnoentities('Action'.$actiontypecode);
} }
if ($action == 'relance') { if ($action == 'relance') {
if (dol_strlen($_POST ['subject'])) if (dol_strlen($_POST['subject']))
$subject = $_POST ['subject']; $subject = $_POST['subject'];
else else
$subject = $langs->transnoentities('Relance facture ' . $object->ref); $subject = $langs->transnoentities('Relance facture ' . $object->ref);
$actiontypecode = 'AC_FAC'; $actiontypecode = 'AC_FAC';
@ -1686,7 +1709,7 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->facture-
if ($result > 0 && $id > 0) { if ($result > 0 && $id > 0) {
$contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid')); $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
$result = $object->add_contact($contactid, $_POST ["type"], $_POST ["source"]); $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
} }
if ($result >= 0) { if ($result >= 0) {
@ -1795,7 +1818,8 @@ if ($action == 'create')
if ($socid > 0) if ($socid > 0)
$res = $soc->fetch($socid); $res = $soc->fetch($socid);
if (! empty($origin) && ! empty($originid)) { if (! empty($origin) && ! empty($originid))
{
// Parse element/subelement (ex: project_task) // Parse element/subelement (ex: project_task)
$element = $subelement = $origin; $element = $subelement = $origin;
if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) { if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) {
@ -1946,7 +1970,7 @@ if ($action == 'create')
foreach ($facids as $facparam) foreach ($facids as $facparam)
{ {
$options .= '<option value="' . $facparam ['id'] . '"'; $options .= '<option value="' . $facparam ['id'] . '"';
if ($facparam ['id'] == $_POST ['fac_replacement']) if ($facparam ['id'] == $_POST['fac_replacement'])
$options .= ' selected="selected"'; $options .= ' selected="selected"';
$options .= '>' . $facparam ['ref']; $options .= '>' . $facparam ['ref'];
$options .= ' (' . $facturestatic->LibStatut(0, $facparam ['status']) . ')'; $options .= ' (' . $facturestatic->LibStatut(0, $facparam ['status']) . ')';
@ -1971,7 +1995,7 @@ if ($action == 'create')
$newinvoice_static->paye = $valarray ['paye']; $newinvoice_static->paye = $valarray ['paye'];
$optionsav .= '<option value="' . $key . '"'; $optionsav .= '<option value="' . $key . '"';
if ($key == $_POST ['fac_avoir']) if ($key == $_POST['fac_avoir'])
$optionsav .= ' selected="selected"'; $optionsav .= ' selected="selected"';
$optionsav .= '>'; $optionsav .= '>';
$optionsav .= $newinvoice_static->ref; $optionsav .= $newinvoice_static->ref;
@ -2115,7 +2139,8 @@ if ($action == 'create')
print '</table>'; print '</table>';
print '</td></tr>'; print '</td></tr>';
if ($socid > 0) { if ($socid > 0)
{
// Discounts for third party // Discounts for third party
print '<tr><td>' . $langs->trans('Discounts') . '</td><td colspan="2">'; print '<tr><td>' . $langs->trans('Discounts') . '</td><td colspan="2">';
if ($soc->remise_percent) if ($soc->remise_percent)
@ -2136,17 +2161,18 @@ if ($action == 'create')
// Date invoice // Date invoice
print '<tr><td class="fieldrequired">' . $langs->trans('Date') . '</td><td colspan="2">'; print '<tr><td class="fieldrequired">' . $langs->trans('Date') . '</td><td colspan="2">';
$form->select_date($dateinvoice, '', '', '', '', "add", 1, 1); $datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
$form->select_date($datefacture?$datefacture:$dateinvoice, '', '', '', '', "add", 1, 1);
print '</td></tr>'; print '</td></tr>';
// Payment term // Payment term
print '<tr><td class="nowrap">' . $langs->trans('PaymentConditionsShort') . '</td><td colspan="2">'; print '<tr><td class="nowrap">' . $langs->trans('PaymentConditionsShort') . '</td><td colspan="2">';
$form->select_conditions_paiements(isset($_POST ['cond_reglement_id']) ? $_POST ['cond_reglement_id'] : $cond_reglement_id, 'cond_reglement_id'); $form->select_conditions_paiements(isset($_POST['cond_reglement_id']) ? $_POST['cond_reglement_id'] : $cond_reglement_id, 'cond_reglement_id');
print '</td></tr>'; print '</td></tr>';
// Payment mode // Payment mode
print '<tr><td>' . $langs->trans('PaymentMode') . '</td><td colspan="2">'; print '<tr><td>' . $langs->trans('PaymentMode') . '</td><td colspan="2">';
$form->select_types_paiements(isset($_POST ['mode_reglement_id']) ? $_POST ['mode_reglement_id'] : $mode_reglement_id, 'mode_reglement_id'); $form->select_types_paiements(isset($_POST['mode_reglement_id']) ? $_POST['mode_reglement_id'] : $mode_reglement_id, 'mode_reglement_id');
print '</td></tr>'; print '</td></tr>';
// Project // Project
@ -3177,7 +3203,7 @@ if ($action == 'create')
foreach ($extrafields->attribute_label as $key => $label) { foreach ($extrafields->attribute_label as $key => $label) {
if ($action == 'edit_extras') { if ($action == 'edit_extras') {
$value = (isset($_POST ["options_" . $key]) ? $_POST ["options_" . $key] : $object->array_options ["options_" . $key]); $value = (isset($_POST["options_" . $key]) ? $_POST["options_" . $key] : $object->array_options ["options_" . $key]);
} else { } else {
$value = $object->array_options ["options_" . $key]; $value = $object->array_options ["options_" . $key];
} }
@ -3190,7 +3216,7 @@ if ($action == 'create')
print '>' . $label . '</td><td colspan="5">'; print '>' . $label . '</td><td colspan="5">';
// Convert date into timestamp format // Convert date into timestamp format
if (in_array($extrafields->attribute_type [$key], array('date','datetime'))) { if (in_array($extrafields->attribute_type [$key], array('date','datetime'))) {
$value = isset($_POST ["options_" . $key]) ? dol_mktime($_POST ["options_" . $key . "hour"], $_POST ["options_" . $key . "min"], 0, $_POST ["options_" . $key . "month"], $_POST ["options_" . $key . "day"], $_POST ["options_" . $key . "year"]) : $db->jdate($object->array_options ['options_' . $key]); $value = isset($_POST["options_" . $key]) ? dol_mktime($_POST["options_" . $key . "hour"], $_POST["options_" . $key . "min"], 0, $_POST["options_" . $key . "month"], $_POST["options_" . $key . "day"], $_POST["options_" . $key . "year"]) : $db->jdate($object->array_options ['options_' . $key]);
} }
if ($action == 'edit_extras' && $user->rights->facture->creer && GETPOST('attribute') == $key) { if ($action == 'edit_extras' && $user->rights->facture->creer && GETPOST('attribute') == $key) {