Merge branch '3.7' of git@github.com:Dolibarr/dolibarr.git into 3.7
This commit is contained in:
commit
8c1760fbcf
28
ChangeLog
28
ChangeLog
@ -53,11 +53,11 @@ FIX send mail, copy sendto don't read the list of contact
|
||||
FIX Properly escape untrusted data to prevent HTML injection.
|
||||
FIX send mail, copy sendto don't read the list of contact
|
||||
|
||||
Path to save photos of products was moved in 3.7.0 to match path of other attached files. If you had loose
|
||||
Path to save photos of products was moved in 3.7.0 to match path of other attached files. If you had loose
|
||||
your photo on the photo tab of products, you can set the constant "PRODUCT_USE_OLD_PATH_FOR_PHOTO" to
|
||||
restore old path.
|
||||
|
||||
WARNING:
|
||||
WARNING:
|
||||
|
||||
Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40.
|
||||
Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost.
|
||||
@ -67,7 +67,7 @@ make a Dolibarr upgrade.
|
||||
|
||||
***** ChangeLog for 3.7 compared to 3.6.* *****
|
||||
For users:
|
||||
- New: Match other auth system: Login can be done entering login or user
|
||||
- New: Match other auth system: Login can be done entering login or user
|
||||
email (this open the road for SSO).
|
||||
- New: Agenda export by project #1967.
|
||||
- New: Increase length of thirdparty to 128 chars.
|
||||
@ -88,14 +88,14 @@ For users:
|
||||
- New: Can filter on status on interventions.
|
||||
- New: Add help info of field type into dictionary of payment types.
|
||||
- New: Add proposals into referer page of thirdparty.
|
||||
- New: On contact list can set filter on both active and not active (no more exclusive select).
|
||||
- New: On contact list can set filter on both active and not active (no more exclusive select).
|
||||
- New: Intervention documents are now available in ECM module.
|
||||
- New: Can attach supplier order to a customer order.
|
||||
- New: Supervisor is now visible into user list.
|
||||
- New: Supervisor is now visible into user list.
|
||||
- New: Add user of creation and validation on invoice export.
|
||||
- New: Add info page about browser.
|
||||
- New: Enable feature developed for 3.6 we forgot to enabled: Adding prefix
|
||||
on uploaded file names.
|
||||
on uploaded file names.
|
||||
- New: No more dependency between contract and service module.
|
||||
- New: [ task #867 ] Remove ESAEB external module code from core.
|
||||
- New: Can create proposal from an intervention.
|
||||
@ -126,7 +126,7 @@ For users:
|
||||
Use accesskey on form search.
|
||||
- New: Intervention documents are now available in ECM module.
|
||||
- New: Add attachments on user card + in ECM module.
|
||||
- New: Can add __PROJECT_REF__ and __TIHRPARTY_NAME__ into email topic or content template.
|
||||
- New: Can add __PROJECT_REF__ and __TIHRPARTY_NAME__ into email topic or content template.
|
||||
- New: [ task #1204 ] add Numering contrat module free (like leopard in product module).
|
||||
- New: [ task #712 ] Add warning when creating invoice from proposal or order, when there is already one invoice.
|
||||
- New: Enable supplier price log table.
|
||||
@ -134,8 +134,8 @@ For users:
|
||||
- New: [ task #1218 ] Can drag and drop an event from calendar to change its day.
|
||||
- New: Optimize size of image static resources.
|
||||
- New: Add hourly and daily amount on user card. Add weekly working hours and salary on user card.
|
||||
- New: Content of predefined email come firstly from table llx_c_email_template, then translation key.
|
||||
- New: Add option MAIN_GENERATE_INVOICES_WITH_PICTURE to show picture
|
||||
- New: Content of predefined email come firstly from table llx_c_email_template, then translation key.
|
||||
- New: Add option MAIN_GENERATE_INVOICES_WITH_PICTURE to show picture
|
||||
onto PDF like MAIN_GENERATE_PROPOSALS_WITH_PICTURE dir for proposals.
|
||||
- New: Add more search field in list of cheque deposits.
|
||||
- New: Add feature to order to invoice on supplier part.
|
||||
@ -237,8 +237,8 @@ Dolibarr better:
|
||||
- Deprecated module "oscommerce" were removed.
|
||||
- Changed the way parameters are provided to scripts sync_xxx_ldap2dolibarr.php
|
||||
- Some field into database were renamed from "libelle" to "label".
|
||||
- Table llx_c_pays were renamed into llx_c_country.
|
||||
- Triggers *_BUILDDOC are removed. Building a doc is not a business event. For action after
|
||||
- Table llx_c_pays were renamed into llx_c_country.
|
||||
- Triggers *_BUILDDOC are removed. Building a doc is not a business event. For action after
|
||||
creation of a pdf or odt, hook "afterPDFCreation" or "afterODTCreation" must be used instead.
|
||||
- A lot of pages named fiche.php were renamed into card.php
|
||||
- A lot of pages named liste.php were renamed into list.php
|
||||
@ -399,7 +399,7 @@ For users:
|
||||
- Fix: Add actions events not implemented.
|
||||
- Fix: Price min of composition is not supplier price min by quantity.
|
||||
- Fix: [ bug #1356 ] Bank accountancy number is limited to 8 numbers.
|
||||
- Fix: [ bug #1439 ] impossible to remove a a translation (multilanguage-feature)
|
||||
- Fix: [ bug #1439 ] impossible to remove a a translation (multilanguage-feature)
|
||||
- New: If multilangue is enabled, mail (from propal, invoice, etc...) message is pre-defaulted in Customer language
|
||||
- Fix: [ bug #1459 ] _ADD_CONTACT and _DEL_CONTACT triggers do not intercept insertion when reported an error
|
||||
- Fix: [ bug #1478 ] BILL_PAYED trigger action does not intercept failure under some circumstances
|
||||
@ -429,8 +429,8 @@ For developers:
|
||||
- New: A module can disable a standard ECM view.
|
||||
- New: Add multilang support into product webservice.
|
||||
- New: Add hooks on project card page.
|
||||
- New: Add call_trigger method on CommonObject class. So new trigger call within object is just :
|
||||
$result = $this->call_trigger($trigger_name, $user)
|
||||
- New: Add call_trigger method on CommonObject class. So new trigger call within object is just :
|
||||
$result = $this->call_trigger($trigger_name, $user)
|
||||
|
||||
WARNING: Following change may create regression for some external modules, but was necessary to make
|
||||
Dolibarr better:
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||
* Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
* Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -225,6 +225,8 @@ class BookKeeping
|
||||
*/
|
||||
function create($user='')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$this->piece_num = 0;
|
||||
|
||||
// first check if line not yet in bookkeeping
|
||||
@ -278,13 +280,45 @@ class BookKeeping
|
||||
$this->date_create = $now;
|
||||
}
|
||||
|
||||
$sql = "INSERT INTO " . MAIN_DB_PREFIX . "accounting_bookkeeping (doc_date, ";
|
||||
$sql .= "doc_type, doc_ref,fk_doc,fk_docdet,code_tiers,numero_compte,label_compte,";
|
||||
$sql .= "debit,credit,montant,sens,fk_user_author,import_key,code_journal,piece_num)";
|
||||
$sql .= " VALUES ('" . $this->doc_date . "','" . $this->doc_type . "','" . $this->doc_ref . "'," . $this->fk_doc . ",";
|
||||
$sql .= $this->fk_docdet . ",'" . $this->code_tiers . "','" . $this->numero_compte . "','" . $this->db->escape($this->label_compte) . "',";
|
||||
$sql .= $this->debit . "," . $this->credit . "," . $this->montant . ",'" . $this->sens . "'," . $user->id . ", '";
|
||||
$sql .= $this->date_create . "','" . $this->code_journal . "'," . $this->piece_num . ")";
|
||||
$sql = "INSERT INTO " . MAIN_DB_PREFIX . "accounting_bookkeeping (";
|
||||
|
||||
$sql .= "doc_date";
|
||||
$sql .= ", doc_type";
|
||||
$sql .= ", doc_ref";
|
||||
$sql .= ", fk_doc";
|
||||
$sql .= ", fk_docdet";
|
||||
$sql .= ", code_tiers";
|
||||
$sql .= ", numero_compte";
|
||||
$sql .= ", label_compte";
|
||||
$sql .= ", debit";
|
||||
$sql .= ", credit";
|
||||
$sql .= ", montant";
|
||||
$sql .= ", sens";
|
||||
$sql .= ", fk_user_author";
|
||||
$sql .= ", import_key";
|
||||
$sql .= ", code_journal";
|
||||
$sql .= ", piece_num";
|
||||
|
||||
$sql .= ") VALUES (";
|
||||
|
||||
$sql .= "'" . $this->doc_date . "'";
|
||||
$sql .= ",'" . $this->doc_type . "'";
|
||||
$sql .= ",'" . $this->doc_ref . "'";
|
||||
$sql .= "," . $this->fk_doc;
|
||||
$sql .= "," . $this->fk_docdet;
|
||||
$sql .= ",'" . $this->code_tiers . "'";
|
||||
$sql .= ",'" . $this->numero_compte . "'";
|
||||
$sql .= ",'" . $this->db->escape($this->label_compte) . "'";
|
||||
$sql .= "," . $this->debit;
|
||||
$sql .= "," . $this->credit;
|
||||
$sql .= "," . $this->montant;
|
||||
$sql .= ",'" . $this->sens . "'";
|
||||
$sql .= ",'" . $this->fk_user_author."'";
|
||||
$sql .= ",'" . $this->date_create . "'";
|
||||
$sql .= ",'" . $this->code_journal . "'";
|
||||
$sql .= "," . $this->piece_num;
|
||||
|
||||
$sql .= ")";
|
||||
|
||||
dol_syslog(get_class($this) . ":: create sql=" . $sql, LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
@ -296,19 +330,19 @@ class BookKeeping
|
||||
$result = 0;
|
||||
} else {
|
||||
$result = - 2;
|
||||
dol_syslog("BookKeeping::Create Erreur $result lecture ID");
|
||||
dol_syslog("BookKeeping::Create Error $result lecture ID");
|
||||
}
|
||||
} else {
|
||||
$result = - 1;
|
||||
dol_syslog("BookKeeping::Create Erreur $result INSERT Mysql");
|
||||
dol_syslog("BookKeeping::Create Error $result INSERT Mysql");
|
||||
}
|
||||
} else {
|
||||
$result = - 3;
|
||||
dol_syslog("BookKeeping::Create Erreur $result SELECT Mysql");
|
||||
dol_syslog("BookKeeping::Create Error $result SELECT Mysql");
|
||||
}
|
||||
} else {
|
||||
$result = - 5;
|
||||
dol_syslog("BookKeeping::Create Erreur $result SELECT Mysql");
|
||||
dol_syslog("BookKeeping::Create Error $result SELECT Mysql");
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
||||
@ -286,6 +286,7 @@ if ($action == 'writeBookKeeping')
|
||||
$bookkeeping->debit = ($mt >= 0 ? $mt : 0);
|
||||
$bookkeeping->credit = ($mt < 0 ? - $mt : 0);
|
||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL;
|
||||
$bookkeeping->fk_user_author = $user->id;
|
||||
|
||||
if ($tabtype[$key] == 'payment') {
|
||||
|
||||
@ -336,6 +337,7 @@ if ($action == 'writeBookKeeping')
|
||||
$bookkeeping->debit = ($mt < 0 ? - $mt : 0);
|
||||
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
|
||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL;
|
||||
$bookkeeping->fk_user_author = $user->id;
|
||||
|
||||
if ($tabtype[$key] == 'sc') {
|
||||
$bookkeeping->code_tiers = '';
|
||||
@ -400,7 +402,7 @@ if ($action == 'writeBookKeeping')
|
||||
}
|
||||
|
||||
if (empty($error)) {
|
||||
setEventMessage($langs->trans('Success'), 'mesgs');
|
||||
setEventMessage($langs->trans("GeneralLedgerIsWritten"),'mesgs');
|
||||
}
|
||||
}
|
||||
// Export
|
||||
|
||||
@ -157,6 +157,7 @@ if ($result) {
|
||||
// Bookkeeping Write
|
||||
if ($action == 'writebookkeeping') {
|
||||
$now = dol_now();
|
||||
$error = 0;
|
||||
|
||||
foreach ( $tabfac as $key => $val ) {
|
||||
foreach ( $tabttc[$key] as $k => $mt ) {
|
||||
@ -177,8 +178,13 @@ if ($action == 'writebookkeeping') {
|
||||
$bookkeeping->debit = ($mt <= 0) ? $mt : 0;
|
||||
$bookkeeping->credit = ($mt > 0) ? $mt : 0;
|
||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
|
||||
$bookkeeping->fk_user_author = $user->id;
|
||||
|
||||
$bookkeeping->create();
|
||||
$result = $bookkeeping->create();
|
||||
if ($result < 0) {
|
||||
$error ++;
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
// Product / Service
|
||||
@ -202,8 +208,13 @@ if ($action == 'writebookkeeping') {
|
||||
$bookkeeping->debit = ($mt > 0) ? $mt : 0;
|
||||
$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
|
||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
|
||||
$bookkeeping->fk_user_author = $user->id;
|
||||
|
||||
$bookkeeping->create();
|
||||
$result = $bookkeeping->create();
|
||||
if ($result < 0) {
|
||||
$error ++;
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -228,11 +239,20 @@ if ($action == 'writebookkeeping') {
|
||||
$bookkeeping->debit = ($mt > 0) ? $mt : 0;
|
||||
$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
|
||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
|
||||
$bookkeeping->fk_user_author = $user->id;
|
||||
|
||||
$bookkeeping->create();
|
||||
$result = $bookkeeping->create();
|
||||
if ($result < 0) {
|
||||
$error ++;
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($error)) {
|
||||
setEventMessage($langs->trans("GeneralLedgerIsWritten"),'mesgs');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -170,6 +170,7 @@ if ($result) {
|
||||
// Bookkeeping Write
|
||||
if ($action == 'writebookkeeping') {
|
||||
$now = dol_now();
|
||||
$error = 0;
|
||||
|
||||
foreach ( $tabfac as $key => $val ) {
|
||||
foreach ( $tabttc[$key] as $k => $mt ) {
|
||||
@ -188,8 +189,13 @@ if ($action == 'writebookkeeping') {
|
||||
$bookkeeping->debit = ($mt >= 0) ? $mt : 0;
|
||||
$bookkeeping->credit = ($mt < 0) ? $mt : 0;
|
||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
|
||||
$bookkeeping->fk_user_author = $user->id;
|
||||
|
||||
$bookkeeping->create();
|
||||
$result = $bookkeeping->create();
|
||||
if ($result < 0) {
|
||||
$error ++;
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
// Product / Service
|
||||
@ -213,8 +219,13 @@ if ($action == 'writebookkeeping') {
|
||||
$bookkeeping->debit = ($mt < 0) ? $mt : 0;
|
||||
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
|
||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
|
||||
$bookkeeping->fk_user_author = $user->id;
|
||||
|
||||
$bookkeeping->create();
|
||||
$result = $bookkeeping->create();
|
||||
if ($result < 0) {
|
||||
$error ++;
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -238,11 +249,20 @@ if ($action == 'writebookkeeping') {
|
||||
$bookkeeping->debit = ($mt < 0) ? $mt : 0;
|
||||
$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
|
||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
|
||||
$bookkeeping->fk_user_author = $user->id;
|
||||
|
||||
$bookkeeping->create();
|
||||
$result = $bookkeeping->create();
|
||||
if ($result < 0) {
|
||||
$error ++;
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($error)) {
|
||||
setEventMessage($langs->trans("GeneralLedgerIsWritten"),'mesgs');
|
||||
}
|
||||
}
|
||||
// Export
|
||||
if ($action == 'export_csv') {
|
||||
|
||||
@ -2572,15 +2572,16 @@ class Facture extends CommonInvoice
|
||||
$numref = "";
|
||||
$numref = $obj->getNextValue($soc,$this,$mode);
|
||||
|
||||
if ($numref != "")
|
||||
{
|
||||
return $numref;
|
||||
}
|
||||
else
|
||||
{
|
||||
/**
|
||||
* $numref can be empty in case we ask for the last value because if there is no invoice created with the
|
||||
* set up mask.
|
||||
*/
|
||||
if ($mode != 'last' && !$numref) {
|
||||
dol_print_error($db,"Facture::getNextNumRef ".$obj->error);
|
||||
return "";
|
||||
}
|
||||
|
||||
return $numref;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* Copyright (C) 2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2007-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2011-2015 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
|
||||
@ -742,7 +742,6 @@ class RemiseCheque extends CommonObject
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$this->date_bordereau = $date;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
|
||||
@ -141,7 +141,7 @@ class modHoliday extends DolibarrModules
|
||||
$r++;
|
||||
|
||||
$this->rights[$r][0] = 20002; // Permission id (must not be already used)
|
||||
$this->rights[$r][1] = 'Create/modify hollidays for everybody'; // Permission label
|
||||
$this->rights[$r][1] = 'Create/modify holidays for everybody'; // Permission label
|
||||
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
|
||||
$this->rights[$r][4] = 'write_all'; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
|
||||
$this->rights[$r][5] = ''; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
|
||||
|
||||
@ -131,7 +131,7 @@ class modStock extends DolibarrModules
|
||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'product as p, '.MAIN_DB_PREFIX.'product_stock as ps, '.MAIN_DB_PREFIX.'entrepot as e';
|
||||
$this->export_sql_end[$r] .=' WHERE p.rowid = ps.fk_product AND ps.fk_entrepot = e.rowid';
|
||||
$this->export_sql_end[$r] .=' AND e.entity = '.$conf->entity;
|
||||
$this->export_sql_end[$r] .=' AND e.entity IN ('.getEntity('stock',1).')';
|
||||
|
||||
|
||||
// Imports
|
||||
|
||||
@ -121,8 +121,10 @@ include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include,
|
||||
|
||||
if ($action == 'setref_supplier' && $user->rights->fournisseur->commande->creer)
|
||||
{
|
||||
|
||||
$result=$object->setValueFrom('ref_supplier',GETPOST('ref_supplier','alpha'));
|
||||
if ($result < 0) dol_print_error($db, $object->error);
|
||||
else $object->ref_supplier=GETPOST('ref_supplier','alpha'); // ADD : ref_supplier to object property, otherwise not visibly updated on change
|
||||
}
|
||||
|
||||
// conditions de reglement
|
||||
|
||||
@ -51,12 +51,12 @@ $now=dol_now();
|
||||
* Actions
|
||||
*/
|
||||
|
||||
// Si création de la demande
|
||||
// If create a request
|
||||
if ($action == 'create')
|
||||
{
|
||||
$cp = new Holiday($db);
|
||||
|
||||
// Si pas le droit de créer une demande
|
||||
// If no right to create a request
|
||||
if (($userid == $user->id && empty($user->rights->holiday->write)) || ($userid != $user->id && empty($user->rights->holiday->write_all)))
|
||||
{
|
||||
$error++;
|
||||
@ -81,21 +81,21 @@ if ($action == 'create')
|
||||
$description = trim(GETPOST('description'));
|
||||
$userID = GETPOST('userID');
|
||||
|
||||
// Si pas de date de début
|
||||
// If no start date
|
||||
if (empty($date_debut))
|
||||
{
|
||||
header('Location: card.php?action=request&error=nodatedebut');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Si pas de date de fin
|
||||
// If no end date
|
||||
if (empty($date_fin))
|
||||
{
|
||||
header('Location: card.php?action=request&error=nodatefin');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Si date de début après la date de fin
|
||||
// If start date after end date
|
||||
if ($date_debut > $date_fin)
|
||||
{
|
||||
header('Location: card.php?action=request&error=datefin');
|
||||
@ -110,7 +110,7 @@ if ($action == 'create')
|
||||
exit;
|
||||
}
|
||||
|
||||
// Si aucun jours ouvrés dans la demande
|
||||
// If there is no Business Days within request
|
||||
$nbopenedday=num_open_day($date_debut_gmt, $date_fin_gmt, 0, 1, $halfday);
|
||||
if($nbopenedday < 0.5)
|
||||
{
|
||||
@ -118,7 +118,7 @@ if ($action == 'create')
|
||||
exit;
|
||||
}
|
||||
|
||||
// Si pas de validateur choisi
|
||||
// If no validator designated
|
||||
if ($valideur < 1)
|
||||
{
|
||||
header('Location: card.php?action=request&error=Valideur');
|
||||
@ -134,7 +134,7 @@ if ($action == 'create')
|
||||
|
||||
$verif = $cp->create($userid);
|
||||
|
||||
// Si pas d'erreur SQL on redirige vers la fiche de la demande
|
||||
// If no SQL error we redirect to the request card
|
||||
if ($verif > 0)
|
||||
{
|
||||
header('Location: card.php?id='.$verif);
|
||||
@ -142,7 +142,7 @@ if ($action == 'create')
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sinon on affiche le formulaire de demande avec le message d'erreur SQL
|
||||
// Otherwise we display the request form with the SQL error message
|
||||
header('Location: card.php?action=request&error=SQL_Create&msg='.$cp->error);
|
||||
exit;
|
||||
}
|
||||
@ -162,7 +162,7 @@ if ($action == 'update')
|
||||
else if ($starthalfday == 'afternoon') $halfday=-1;
|
||||
else if ($endhalfday == 'morning') $halfday=1;
|
||||
|
||||
// Si pas le droit de modifier une demande
|
||||
// If no right to modify a request
|
||||
if (! $user->rights->holiday->write)
|
||||
{
|
||||
header('Location: card.php?action=request&error=CantUpdate');
|
||||
@ -174,40 +174,40 @@ if ($action == 'update')
|
||||
|
||||
$canedit=(($user->id == $cp->fk_user && $user->rights->holiday->write) || ($user->id != $cp->fk_user && $user->rights->holiday->write_all));
|
||||
|
||||
// Si en attente de validation
|
||||
// If under validation
|
||||
if ($cp->statut == 1)
|
||||
{
|
||||
// Si c'est le créateur ou qu'il a le droit de tout lire / modifier
|
||||
// If this is the requestor or has read/write rights
|
||||
if ($canedit)
|
||||
{
|
||||
$valideur = $_POST['valideur'];
|
||||
$description = trim($_POST['description']);
|
||||
|
||||
// Si pas de date de début
|
||||
// If no start date
|
||||
if (empty($_POST['date_debut_'])) {
|
||||
header('Location: card.php?id='.$_POST['holiday_id'].'&action=edit&error=nodatedebut');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Si pas de date de fin
|
||||
// If no end date
|
||||
if (empty($_POST['date_fin_'])) {
|
||||
header('Location: card.php?id='.$_POST['holiday_id'].'&action=edit&error=nodatefin');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Si date de début après la date de fin
|
||||
// If start date after end date
|
||||
if ($date_debut > $date_fin) {
|
||||
header('Location: card.php?id='.$_POST['holiday_id'].'&action=edit&error=datefin');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Si pas de valideur choisi
|
||||
// If no validator designated
|
||||
if ($valideur < 1) {
|
||||
header('Location: card.php?id='.$_POST['holiday_id'].'&action=edit&error=Valideur');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Si pas de jours ouvrés dans la demande
|
||||
// If there is no Business Days within request
|
||||
$nbopenedday=num_open_day($date_debut_gmt, $date_fin_gmt, 0, 1, $halfday);
|
||||
if ($nbopenedday < 0.5)
|
||||
{
|
||||
@ -230,7 +230,7 @@ if ($action == 'update')
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sinon on affiche le formulaire de demande avec le message d'erreur SQL
|
||||
// Otherwise we display the request form with the SQL error message
|
||||
header('Location: card.php?id='.$_POST['holiday_id'].'&action=edit&error=SQL_Create&msg='.$cp->error);
|
||||
exit;
|
||||
}
|
||||
@ -241,7 +241,7 @@ if ($action == 'update')
|
||||
}
|
||||
}
|
||||
|
||||
// Si suppression de la demande
|
||||
// If delete of request
|
||||
if ($action == 'confirm_delete' && GETPOST('confirm') == 'yes')
|
||||
{
|
||||
if($user->rights->holiday->delete)
|
||||
@ -255,7 +255,7 @@ if ($action == 'confirm_delete' && GETPOST('confirm') == 'yes')
|
||||
|
||||
$canedit=(($user->id == $cp->fk_user && $user->rights->holiday->write) || ($user->id != $cp->fk_user && $user->rights->holiday->write_all));
|
||||
|
||||
// Si c'est bien un brouillon
|
||||
// If this is a rough draft
|
||||
if ($cp->statut == 1 || $cp->statut == 3)
|
||||
{
|
||||
// Si l'utilisateur à le droit de lire cette demande, il peut la supprimer
|
||||
|
||||
@ -157,4 +157,5 @@ ValidateHistory=Validate Automatically
|
||||
|
||||
ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used
|
||||
|
||||
FicheVentilation=Breakdown card
|
||||
FicheVentilation=Breakdown card
|
||||
GeneralLedgerIsWritten=Operations are written in the general ledger
|
||||
@ -72,7 +72,7 @@ class FormProduct
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps on ps.fk_entrepot = e.rowid";
|
||||
$sql.= " AND ps.fk_product = '".$fk_product."'";
|
||||
}
|
||||
$sql.= " WHERE e.entity = ".$conf->entity;
|
||||
$sql.= " WHERE e.entity IN (".getEntity('stock',1).')';
|
||||
$sql.= " AND e.statut = 1";
|
||||
$sql.= " ORDER BY e.label";
|
||||
|
||||
|
||||
@ -63,7 +63,7 @@ print "</table></form><br>";
|
||||
$sql = "SELECT e.label, e.rowid, e.statut";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."entrepot as e";
|
||||
$sql.= " WHERE e.statut in (0,1)";
|
||||
$sql.= " AND e.entity = ".$conf->entity;
|
||||
$sql.= " AND e.entity IN (".getEntity('stock',1).')';
|
||||
$sql.= $db->order('e.statut','DESC');
|
||||
$sql.= $db->plimit(15, 0);
|
||||
|
||||
@ -118,7 +118,7 @@ $sql.= ", ".MAIN_DB_PREFIX."stock_mouvement as m";
|
||||
$sql.= ", ".MAIN_DB_PREFIX."product as p";
|
||||
$sql.= " WHERE m.fk_product = p.rowid";
|
||||
$sql.= " AND m.fk_entrepot = e.rowid";
|
||||
$sql.= " AND e.entity = ".$conf->entity;
|
||||
$sql.= " AND e.entity IN (".getEntity('stock',1).')';
|
||||
if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) $sql.= " AND p.fk_product_type = 0";
|
||||
$sql.= $db->order("datem","DESC");
|
||||
$sql.= $db->plimit($max,0);
|
||||
|
||||
@ -56,7 +56,7 @@ $sql.= " SUM(p.pmp * ps.reel) as estimatedvalue, SUM(p.price * ps.reel) as sellv
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."entrepot as e";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON e.rowid = ps.fk_entrepot";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON ps.fk_product = p.rowid";
|
||||
$sql.= " WHERE e.entity = ".$conf->entity;
|
||||
$sql.= " WHERE e.entity IN (".getEntity('stock',1).')';
|
||||
if ($sref)
|
||||
{
|
||||
$sql.= " AND e.label LIKE '%".$db->escape($sref)."%'";
|
||||
|
||||
@ -129,7 +129,7 @@ $sql.= " ".MAIN_DB_PREFIX."stock_mouvement as m)";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u ON m.fk_user_author = u.rowid";
|
||||
$sql.= " WHERE m.fk_product = p.rowid";
|
||||
$sql.= " AND m.fk_entrepot = e.rowid";
|
||||
$sql.= " AND e.entity = ".$conf->entity;
|
||||
$sql.= " AND e.entity IN (".getEntity('stock',1).')';
|
||||
if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) $sql.= " AND p.fk_product_type = 0";
|
||||
if ($id)
|
||||
{
|
||||
|
||||
@ -687,7 +687,7 @@ $sql.= " FROM ".MAIN_DB_PREFIX."entrepot as e,";
|
||||
$sql.= " ".MAIN_DB_PREFIX."product_stock as ps";
|
||||
$sql.= " WHERE ps.reel != 0";
|
||||
$sql.= " AND ps.fk_entrepot = e.rowid";
|
||||
$sql.= " AND e.entity = ".$conf->entity;
|
||||
$sql.= " AND e.entity IN (".getEntity('stock',1).')';
|
||||
$sql.= " AND ps.fk_product = ".$product->id;
|
||||
$sql.= " ORDER BY e.label";
|
||||
|
||||
|
||||
@ -57,6 +57,9 @@ $texte = '';
|
||||
$sortfield = GETPOST('sortfield','alpha');
|
||||
$sortorder = GETPOST('sortorder','alpha');
|
||||
$page = GETPOST('page','int');
|
||||
if ($page == -1) { $page = 0; }
|
||||
$limit = $conf->liste_limit;
|
||||
$offset = $limit * $page ;
|
||||
|
||||
if (!$sortfield) {
|
||||
$sortfield = 'p.ref';
|
||||
@ -65,11 +68,6 @@ if (!$sortfield) {
|
||||
if (!$sortorder) {
|
||||
$sortorder = 'ASC';
|
||||
}
|
||||
$limit = $conf->liste_limit;
|
||||
$offset = $limit * $page ;
|
||||
|
||||
// Force limit to no (currently solution to solve loosing selection when using pagination. No pagination on this page)
|
||||
$limit = 0;
|
||||
|
||||
|
||||
/*
|
||||
@ -309,7 +307,7 @@ if ($usevirtualstock)
|
||||
}
|
||||
|
||||
$sql.= $db->order($sortfield,$sortorder);
|
||||
$sql.= $db->plimit($limit, $offset);
|
||||
$sql.= $db->plimit($limit + 1, $offset);
|
||||
|
||||
//print $sql;
|
||||
$resql = $db->query($sql);
|
||||
|
||||
@ -56,7 +56,7 @@ $sql.= " SUM(ps.pmp * ps.reel) as estimatedvalue, SUM(p.price * ps.reel) as sell
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."entrepot as e";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON e.rowid = ps.fk_entrepot";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON ps.fk_product = p.rowid";
|
||||
$sql.= " WHERE e.entity = ".$conf->entity;
|
||||
$sql.= " WHERE e.entity IN (".getEntity('stock',1).')';
|
||||
if ($sref)
|
||||
{
|
||||
$sql.= " AND e.label LIKE '%".$db->escape($sref)."%'";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user