Merge branch 'develop_dolibarr' into develop
This commit is contained in:
commit
93f8a601ba
27
ChangeLog
27
ChangeLog
@ -41,18 +41,18 @@ For users:
|
|||||||
- New: A more responsive desgin for statistic box of home page.
|
- New: A more responsive desgin for statistic box of home page.
|
||||||
- Qual: Implement same rule for return value of all command line scripts (0 when success, <>0 if error).
|
- Qual: Implement same rule for return value of all command line scripts (0 when success, <>0 if error).
|
||||||
- New: [ task #1005 ] Adapting to Spanish legislation bill numbering
|
- New: [ task #1005 ] Adapting to Spanish legislation bill numbering
|
||||||
- New: [ task #1011 ] Now supplier order and invoice deal with payment terms and mode
|
- New: [ task #1011 ] Now supplier order and invoice deal with payment terms and mode.
|
||||||
- New: [ task #1014 ] Add option to recursivly add parent category
|
- New: [ task #1014 ] Add option to recursivly add parent category.
|
||||||
- New: [ task #1016 ] Can define a specific numbering for deposits
|
- New: [ task #1016 ] Can define a specific numbering for deposits.
|
||||||
- New: [ task #918 ] Stock replenishment
|
- New: [ task #918 ] Stock replenishment.
|
||||||
- Fix: [ bug #992 ] Proforma invoices don't have a separated numeric count
|
- Fix: [ bug #992 ] Proforma invoices don't have a separated numeric count.
|
||||||
- New : Add pdf link into supplier invoice list and supplier order list
|
- New : Add pdf link into supplier invoice list and supplier order list.
|
||||||
- New : Genrate auto the PDF for supplier invoice
|
- New : Genrate auto the PDF for supplier invoice.
|
||||||
- New : Add category into filter webservice thirdparty method getListOfThirdParties
|
- New : Add category into filter webservice thirdparty method getListOfThirdParties.
|
||||||
- New : Allow to define margin or mark rate during quoting, ordering, invoicing
|
- New : Allow to define margin or mark rate during quoting, ordering, invoicing.
|
||||||
- New : User permissions on margin module
|
- New : User permissions on margin module.
|
||||||
- New : Add ref supplier into muscadet model
|
- New : Add ref supplier into muscadet model/
|
||||||
- New : Add ability to copy contact address to clipboard
|
- New : Add ability to copy contact address to clipboard.
|
||||||
- New: Can use tag {mm} before {yy} even when there is a reset into numbering masks.
|
- New: Can use tag {mm} before {yy} even when there is a reset into numbering masks.
|
||||||
- New: [ task #1060 ] Register fields localtax(1|2)_type into details tables.
|
- New: [ task #1060 ] Register fields localtax(1|2)_type into details tables.
|
||||||
- New: [ task #923 ] Localtax support for ODT templates.
|
- New: [ task #923 ] Localtax support for ODT templates.
|
||||||
@ -61,7 +61,8 @@ For users:
|
|||||||
- New: Can send an email from thirdparty card.
|
- New: Can send an email from thirdparty card.
|
||||||
- New: Can cancel holidays that were previously validated.
|
- New: Can cancel holidays that were previously validated.
|
||||||
- Fix: [bug #1022] correct margin calculation for credit notes.
|
- Fix: [bug #1022] correct margin calculation for credit notes.
|
||||||
- New: Can choose contact on event (action com) creation, and filtred by thirdparty
|
- New: Can choose contact on event (action com) creation, and filtred by thirdparty.
|
||||||
|
- New: Add hidden option MAIN_FORCE_DEFAULT_STATE_ID.
|
||||||
|
|
||||||
For translators:
|
For translators:
|
||||||
- Qual: Normalized sort order of all languages files with english reference files.
|
- Qual: Normalized sort order of all languages files with english reference files.
|
||||||
|
|||||||
1
dev/iso-normes/vat_number_names.txt
Normal file
1
dev/iso-normes/vat_number_names.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
http://en.wikipedia.org/wiki/VAT_identification_number
|
||||||
@ -57,6 +57,14 @@ if ($user->societe_id > 0)
|
|||||||
$socid = $user->societe_id;
|
$socid = $user->societe_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$object=new Facture($db);
|
||||||
|
|
||||||
|
// Load object
|
||||||
|
if ($facid > 0)
|
||||||
|
{
|
||||||
|
$ret=$object->fetch($facid);
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize technical object to manage hooks of paiements. Note that conf->hooks_modules contains array array
|
// Initialize technical object to manage hooks of paiements. Note that conf->hooks_modules contains array array
|
||||||
$hookmanager = new HookManager($db);
|
$hookmanager = new HookManager($db);
|
||||||
$hookmanager->initHooks(array('paiementcard'));
|
$hookmanager->initHooks(array('paiementcard'));
|
||||||
|
|||||||
@ -55,7 +55,7 @@ if ($action == 'builddoc')
|
|||||||
$rap = new pdf_paiement($db);
|
$rap = new pdf_paiement($db);
|
||||||
|
|
||||||
$outputlangs = $langs;
|
$outputlangs = $langs;
|
||||||
if (! empty(GETPOST('lang_id')))
|
if (GETPOST('lang_id'))
|
||||||
{
|
{
|
||||||
$outputlangs = new Translate("",$conf);
|
$outputlangs = new Translate("",$conf);
|
||||||
$outputlangs->setDefaultLang(GETPOST('lang_id'));
|
$outputlangs->setDefaultLang(GETPOST('lang_id'));
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2006-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2006-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||||
* Copyright (C) 2011-2012 Philippe Grand <philippe.grand@atoo-net.com>
|
* Copyright (C) 2011-2012 Philippe Grand <philippe.grand@atoo-net.com>
|
||||||
@ -464,7 +464,7 @@ abstract class CommonObject
|
|||||||
$sql.= " WHERE tc.element='".$this->element."'";
|
$sql.= " WHERE tc.element='".$this->element."'";
|
||||||
if ($activeonly == 1)
|
if ($activeonly == 1)
|
||||||
$sql.= " AND tc.active=1"; // only the active type
|
$sql.= " AND tc.active=1"; // only the active type
|
||||||
|
|
||||||
if (! empty($source)) $sql.= " AND tc.source='".$source."'";
|
if (! empty($source)) $sql.= " AND tc.source='".$source."'";
|
||||||
$sql.= " ORDER by tc.".$order;
|
$sql.= " ORDER by tc.".$order;
|
||||||
|
|
||||||
@ -1112,9 +1112,9 @@ abstract class CommonObject
|
|||||||
$row = $this->db->fetch_row($resql);
|
$row = $this->db->fetch_row($resql);
|
||||||
$rows[] = $row[0]; // Add parent line into array rows
|
$rows[] = $row[0]; // Add parent line into array rows
|
||||||
$childrens = $this->getChildrenOfLine($row[0]);
|
$childrens = $this->getChildrenOfLine($row[0]);
|
||||||
if (! empty($children))
|
if (! empty($childrens))
|
||||||
{
|
{
|
||||||
foreach($children as $child)
|
foreach($childrens as $child)
|
||||||
{
|
{
|
||||||
array_push($rows, $child);
|
array_push($rows, $child);
|
||||||
}
|
}
|
||||||
@ -2621,7 +2621,7 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* This is to show add lines */
|
/* This is to show add lines */
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||||
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
||||||
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
|
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
|
||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||||
* Copyright (C) 2006 Marc Barilley/Ocebo <marc@ocebo.com>
|
* Copyright (C) 2006 Marc Barilley/Ocebo <marc@ocebo.com>
|
||||||
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerker@telenet.be>
|
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerker@telenet.be>
|
||||||
@ -800,7 +800,7 @@ class Form
|
|||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
|
|
||||||
if ($conf->global->SOCIETE_ADD_REF_IN_LIST) {
|
if ($conf->global->SOCIETE_ADD_REF_IN_LIST) {
|
||||||
if (($obj->client) && (!empty($obj->code_client))) {
|
if (($obj->client) && (!empty($obj->code_client))) {
|
||||||
$label = $obj->code_client. ' - ';
|
$label = $obj->code_client. ' - ';
|
||||||
@ -814,7 +814,7 @@ class Form
|
|||||||
{
|
{
|
||||||
$label=$obj->nom;
|
$label=$obj->nom;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($showtype)
|
if ($showtype)
|
||||||
{
|
{
|
||||||
if ($obj->client || $obj->fournisseur) $label.=' (';
|
if ($obj->client || $obj->fournisseur) $label.=' (';
|
||||||
@ -2484,9 +2484,9 @@ class Form
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Show a confirmation HTML form or AJAX popup.
|
* Show a confirmation HTML form or AJAX popup.
|
||||||
* Easiest way to use this is with useajax=1.
|
* Easiest way to use this is with useajax=1.
|
||||||
* If you use useajax='xxx', you must also add jquery code to trigger opening of box (with correct parameters)
|
* If you use useajax='xxx', you must also add jquery code to trigger opening of box (with correct parameters)
|
||||||
* just after calling this method. For example:
|
* just after calling this method. For example:
|
||||||
* print '<script type="text/javascript">'."\n";
|
* print '<script type="text/javascript">'."\n";
|
||||||
* print 'jQuery(document).ready(function() {'."\n";
|
* print 'jQuery(document).ready(function() {'."\n";
|
||||||
* print 'jQuery(".xxxlink").click(function(e) { jQuery("#aparamid").val(jQuery(this).attr("rel")); jQuery("#dialog-confirm-xxx").dialog("open"); return false; });'."\n";
|
* print 'jQuery(".xxxlink").click(function(e) { jQuery("#aparamid").val(jQuery(this).attr("rel")); jQuery("#dialog-confirm-xxx").dialog("open"); return false; });'."\n";
|
||||||
@ -2587,9 +2587,9 @@ class Form
|
|||||||
$more.='</table>'."\n";
|
$more.='</table>'."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// JQUI method dialog is broken with jmobile, we use standard HTML.
|
// JQUI method dialog is broken with jmobile, we use standard HTML.
|
||||||
// Note: When using dol_use_jmobile, you must also check code for button use a GET url with action=xxx and output the confirm code only when action=xxx
|
// Note: When using dol_use_jmobile, you must also check code for button use a GET url with action=xxx and output the confirm code only when action=xxx
|
||||||
if (! empty($conf->dol_use_jmobile)) $useajax=0;
|
if (! empty($conf->dol_use_jmobile)) $useajax=0;
|
||||||
|
|
||||||
if ($useajax && $conf->use_javascript_ajax)
|
if ($useajax && $conf->use_javascript_ajax)
|
||||||
{
|
{
|
||||||
@ -3376,7 +3376,7 @@ class Form
|
|||||||
|
|
||||||
// Disabled if seller is not subject to VAT
|
// Disabled if seller is not subject to VAT
|
||||||
$disabled=false; $title='';
|
$disabled=false; $title='';
|
||||||
if (is_object($societe_vendeuse) && $societe_vendeuse->id == $mysoc->id && $societe_vendeuse->tva_assuj == "0")
|
if (is_object($societe_vendeuse) && $societe_vendeuse->id == $mysoc->id && $societe_vendeuse->tva_assuj == "0")
|
||||||
{
|
{
|
||||||
$title=' title="'.$langs->trans('VATIsNotUsed').'"';
|
$title=' title="'.$langs->trans('VATIsNotUsed').'"';
|
||||||
$disabled=true;
|
$disabled=true;
|
||||||
|
|||||||
@ -203,7 +203,7 @@ class FormCompany
|
|||||||
* un code donnee mais dans ce cas, le champ pays differe).
|
* un code donnee mais dans ce cas, le champ pays differe).
|
||||||
* Ainsi les liens avec les departements se font sur un departement independemment de son nom.
|
* Ainsi les liens avec les departements se font sur un departement independemment de son nom.
|
||||||
*
|
*
|
||||||
* @param string $selected Code state preselected
|
* @param string $selected Code state preselected (mus be state id)
|
||||||
* @param string $country_codeid Country code or id: 0=list for all countries, otherwise country code or country rowid to show
|
* @param string $country_codeid Country code or id: 0=list for all countries, otherwise country code or country rowid to show
|
||||||
* @param string $htmlname Id of department
|
* @param string $htmlname Id of department
|
||||||
* @return string String with HTML select
|
* @return string String with HTML select
|
||||||
@ -257,7 +257,8 @@ class FormCompany
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($selected > 0 && $selected == $obj->rowid)
|
if ((! empty($selected) && $selected == $obj->rowid)
|
||||||
|
|| (empty($selected) && ! empty($conf->global->MAIN_FORCE_DEFAULT_STATE_ID) && $conf->global->MAIN_FORCE_DEFAULT_STATE_ID == $obj->rowid))
|
||||||
{
|
{
|
||||||
$out.= '<option value="'.$obj->rowid.'" selected="selected">';
|
$out.= '<option value="'.$obj->rowid.'" selected="selected">';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -106,11 +106,12 @@ class Translate
|
|||||||
// Array force long code from first part, even if long code is defined
|
// Array force long code from first part, even if long code is defined
|
||||||
$longforshort=array('ar'=>'ar_SA');
|
$longforshort=array('ar'=>'ar_SA');
|
||||||
if (isset($longforshort[strtolower($langpart[0])])) $srclang=$longforshort[strtolower($langpart[0])];
|
if (isset($longforshort[strtolower($langpart[0])])) $srclang=$longforshort[strtolower($langpart[0])];
|
||||||
else {
|
else if (! is_numeric($langpart[1])) { // Second part YY may be a numeric with some Chrome browser
|
||||||
$srclang=strtolower($langpart[0])."_".strtoupper($langpart[1]);
|
$srclang=strtolower($langpart[0])."_".strtoupper($langpart[1]);
|
||||||
$longforlong=array('no_nb'=>'nb_NO');
|
$longforlong=array('no_nb'=>'nb_NO');
|
||||||
if (isset($longforlong[strtolower($srclang)])) $srclang=$longforlong[strtolower($srclang)];
|
if (isset($longforlong[strtolower($srclang)])) $srclang=$longforlong[strtolower($srclang)];
|
||||||
}
|
}
|
||||||
|
else $srclang=strtolower($langpart[0])."_".strtoupper($langpart[0]);
|
||||||
}
|
}
|
||||||
else { // If it's for a codetouse that is a short code xx
|
else { // If it's for a codetouse that is a short code xx
|
||||||
// Array to convert short lang code into long code.
|
// Array to convert short lang code into long code.
|
||||||
@ -787,11 +788,11 @@ class Translate
|
|||||||
|
|
||||||
function get_translations_for_substitutions() {
|
function get_translations_for_substitutions() {
|
||||||
$substitutionarray = array();
|
$substitutionarray = array();
|
||||||
|
|
||||||
foreach($this->tab_translate as $code => $label) {
|
foreach($this->tab_translate as $code => $label) {
|
||||||
$substitutionarray['lang_'.$code] = $label;
|
$substitutionarray['lang_'.$code] = $label;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $substitutionarray;
|
return $substitutionarray;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,14 +54,16 @@ function dol_json_encode($elements)
|
|||||||
//var_dump($num);
|
//var_dump($num);
|
||||||
|
|
||||||
// determine type
|
// determine type
|
||||||
if (is_numeric(key($elements)))
|
if (is_numeric(key($elements)) && key($elements) == 0)
|
||||||
{
|
{
|
||||||
// indexed (list)
|
// indexed (list)
|
||||||
|
$keysofelements=array_keys($elements); // Elements array mus have key that does not start with 0 and end with num-1, so we will use this later.
|
||||||
$output = '[';
|
$output = '[';
|
||||||
for ($i = 0, $last = ($num - 1); isset($elements[$i]); ++$i)
|
for ($i = 0, $last = ($num - 1); $i < $num; $i++)
|
||||||
{
|
{
|
||||||
if (is_array($elements[$i]) || is_object($elements[$i])) $output.= json_encode($elements[$i]);
|
if (! isset($elements[$keysofelements[$i]])) continue;
|
||||||
else $output .= _val($elements[$i]);
|
if (is_array($elements[$keysofelements[$i]]) || is_object($elements[$keysofelements[$i]])) $output.= json_encode($elements[$keysofelements[$i]]);
|
||||||
|
else $output .= _val($elements[$keysofelements[$i]]);
|
||||||
if ($i !== $last) $output.= ',';
|
if ($i !== $last) $output.= ',';
|
||||||
}
|
}
|
||||||
$output.= ']';
|
$output.= ']';
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
/* Copyright (C) 2010-2013 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2010-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2010-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||||
@ -65,7 +65,7 @@
|
|||||||
{
|
{
|
||||||
if ($line->fk_product > 0) {
|
if ($line->fk_product > 0) {
|
||||||
|
|
||||||
echo $form->textwithtooltip($text,$description,3,'','',$i,0,($line->fk_parent_line?img_picto('', 'rightarrow'):''));
|
echo $form->textwithtooltip($text,$description,3,'','',$i,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
|
||||||
|
|
||||||
// Show range
|
// Show range
|
||||||
echo get_date_range($line->date_start, $line->date_end);
|
echo get_date_range($line->date_start, $line->date_end);
|
||||||
@ -78,14 +78,14 @@
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (! empty($line->fk_parent_line)) echo img_picto('', 'rightarrow');
|
|
||||||
if ($type==1) $text = img_object($langs->trans('Service'),'service');
|
if ($type==1) $text = img_object($langs->trans('Service'),'service');
|
||||||
else $text = img_object($langs->trans('Product'),'product');
|
else $text = img_object($langs->trans('Product'),'product');
|
||||||
|
|
||||||
if (! empty($line->label)) {
|
if (! empty($line->label)) {
|
||||||
$text.= ' <strong>'.$line->label.'</strong>';
|
$text.= ' <strong>'.$line->label.'</strong>';
|
||||||
echo $form->textwithtooltip($text,dol_htmlentitiesbr($line->description),3,'','',$i,0,($line->fk_parent_line?img_picto('', 'rightarrow'):''));
|
echo $form->textwithtooltip($text,dol_htmlentitiesbr($line->description),3,'','',$i,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
|
||||||
} else {
|
} else {
|
||||||
|
if (! empty($line->fk_parent_line)) echo img_picto('', 'rightarrow');
|
||||||
echo $text.' '.dol_htmlentitiesbr($line->description);
|
echo $text.' '.dol_htmlentitiesbr($line->description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -51,9 +51,9 @@ $langs->load('propal');
|
|||||||
|
|
||||||
$origin = GETPOST('origin','alpha')?GETPOST('origin','alpha'):'expedition'; // Example: commande, propal
|
$origin = GETPOST('origin','alpha')?GETPOST('origin','alpha'):'expedition'; // Example: commande, propal
|
||||||
$origin_id = GETPOST('id','int')?GETPOST('id','int'):'';
|
$origin_id = GETPOST('id','int')?GETPOST('id','int'):'';
|
||||||
|
$id = $origin_id;
|
||||||
if (empty($origin_id)) $origin_id = GETPOST('origin_id','int'); // Id of order or propal
|
if (empty($origin_id)) $origin_id = GETPOST('origin_id','int'); // Id of order or propal
|
||||||
if (empty($origin_id)) $origin_id = GETPOST('object_id','int'); // Id of order or propal
|
if (empty($origin_id)) $origin_id = GETPOST('object_id','int'); // Id of order or propal
|
||||||
$id = $origin_id;
|
|
||||||
$ref=GETPOST('ref','alpha');
|
$ref=GETPOST('ref','alpha');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
@ -70,11 +70,6 @@ $hidedesc = (GETPOST('hidedesc','int') ? GETPOST('hidedesc','int') : (! empty(
|
|||||||
$hideref = (GETPOST('hideref','int') ? GETPOST('hideref','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
|
$hideref = (GETPOST('hideref','int') ? GETPOST('hideref','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
|
||||||
|
|
||||||
$object = new Expedition($db);
|
$object = new Expedition($db);
|
||||||
// Load object
|
|
||||||
if ($id > 0 || ! empty($ref))
|
|
||||||
{
|
|
||||||
$ret=$object->fetch($id, $ref);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load object
|
// Load object
|
||||||
if ($id > 0 || ! empty($ref))
|
if ($id > 0 || ! empty($ref))
|
||||||
@ -95,8 +90,6 @@ if ($action == 'add')
|
|||||||
{
|
{
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
$object = new Expedition($db);
|
|
||||||
|
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
$object->note = GETPOST('note','alpha');
|
$object->note = GETPOST('note','alpha');
|
||||||
|
|||||||
@ -301,3 +301,12 @@ ALTER TABLE llx_facture_fourn MODIFY COLUMN fk_cond_reglement integer NULL;
|
|||||||
|
|
||||||
insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (9,'COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1);
|
insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (9,'COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1);
|
||||||
|
|
||||||
|
|
||||||
|
create table llx_contrat_extrafields
|
||||||
|
(
|
||||||
|
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
tms timestamp,
|
||||||
|
fk_object integer NOT NULL,
|
||||||
|
import_key varchar(14) -- import key
|
||||||
|
) ENGINE=innodb;
|
||||||
|
|
||||||
|
|||||||
20
htdocs/install/mysql/tables/llx_contrat_extrafields.key.sql
Normal file
20
htdocs/install/mysql/tables/llx_contrat_extrafields.key.sql
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
-- ===================================================================
|
||||||
|
-- Copyright (C) 2013 Charles-Fr BENKE <charles.fr@benke.fr>
|
||||||
|
--
|
||||||
|
-- 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
|
||||||
|
-- the Free Software Foundation; either version 3 of the License, or
|
||||||
|
-- (at your option) any later version.
|
||||||
|
--
|
||||||
|
-- This program is distributed in the hope that it will be useful,
|
||||||
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
-- GNU General Public License for more details.
|
||||||
|
--
|
||||||
|
-- You should have received a copy of the GNU General Public License
|
||||||
|
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
--
|
||||||
|
-- ===================================================================
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE llx_contrat_extrafields ADD INDEX idx_contrat_extrafields (fk_object);
|
||||||
25
htdocs/install/mysql/tables/llx_contrat_extrafields.sql
Normal file
25
htdocs/install/mysql/tables/llx_contrat_extrafields.sql
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
-- ========================================================================
|
||||||
|
-- Copyright (C) 2013 Charles-Fr BENKE <charles.fr@benke.fr>
|
||||||
|
--
|
||||||
|
-- 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
|
||||||
|
-- the Free Software Foundation; either version 3 of the License, or
|
||||||
|
-- (at your option) any later version.
|
||||||
|
--
|
||||||
|
-- This program is distributed in the hope that it will be useful,
|
||||||
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
-- GNU General Public License for more details.
|
||||||
|
--
|
||||||
|
-- You should have received a copy of the GNU General Public License
|
||||||
|
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
--
|
||||||
|
-- ========================================================================
|
||||||
|
|
||||||
|
create table llx_contrat_extrafields
|
||||||
|
(
|
||||||
|
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
tms timestamp,
|
||||||
|
fk_object integer NOT NULL,
|
||||||
|
import_key varchar(14) -- import key
|
||||||
|
) ENGINE=innodb;
|
||||||
@ -104,7 +104,7 @@ ProfId3=Professional ID 3
|
|||||||
ProfId4=Professional ID 4
|
ProfId4=Professional ID 4
|
||||||
ProfId5=Professional ID 5
|
ProfId5=Professional ID 5
|
||||||
ProfId6=Professional ID 6
|
ProfId6=Professional ID 6
|
||||||
ProfId1AR=Проф. Id едно (CUIT / Cuil)
|
ProfId1AR=Проф. Id едно (CUIL)
|
||||||
ProfId2AR=Проф. Id 2 (Revenu зверове)
|
ProfId2AR=Проф. Id 2 (Revenu зверове)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Professional ID 3
|
|||||||
ProfId4=Professional ID 4
|
ProfId4=Professional ID 4
|
||||||
ProfId5=Professionel ID 5
|
ProfId5=Professionel ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof Id 2 (revenu Bestier)
|
ProfId2AR=Prof Id 2 (revenu Bestier)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -301,7 +301,7 @@ ProfId1NL=KVK nummer
|
|||||||
ProfId2NL=-
|
ProfId2NL=-
|
||||||
ProfId3NL=-
|
ProfId3NL=-
|
||||||
ProfId4NL=-
|
ProfId4NL=-
|
||||||
ProfId1AR=Prof Id 1 (CUIT / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof Id 2 (Revenu Bestien)
|
ProfId2AR=Prof Id 2 (Revenu Bestien)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Professional ID 3
|
|||||||
ProfId4=Professional ID 4
|
ProfId4=Professional ID 4
|
||||||
ProfId5=Professional ID 5
|
ProfId5=Professional ID 5
|
||||||
ProfId6=Professional ID 6
|
ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof Id 2 (Revenu Bestien)
|
ProfId2AR=Prof Id 2 (Revenu Bestien)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -127,6 +127,7 @@ ErrorDateMustBeBeforeToday=The date can not be greater than today
|
|||||||
ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode.
|
ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode.
|
||||||
ErrorPHPNeedModule=Error, your PHP must have module <b>%s</b> installed to use this feature.
|
ErrorPHPNeedModule=Error, your PHP must have module <b>%s</b> installed to use this feature.
|
||||||
ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s
|
ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s
|
||||||
|
ErrorWarehouseMustDiffers=Source and target warehouses must differs
|
||||||
|
|
||||||
# Warnings
|
# Warnings
|
||||||
WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined
|
WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined
|
||||||
|
|||||||
@ -22,6 +22,7 @@ Language_es_AR=Spanish (Argentina)
|
|||||||
Language_es_HN=Spanish (Honduras)
|
Language_es_HN=Spanish (Honduras)
|
||||||
Language_es_MX=Spanish (Mexico)
|
Language_es_MX=Spanish (Mexico)
|
||||||
Language_es_PY=Spanish (Paraguay)
|
Language_es_PY=Spanish (Paraguay)
|
||||||
|
Language_es_PE=Spanish (Peru)
|
||||||
Language_es_PR=Spanish (Puerto Rico)
|
Language_es_PR=Spanish (Puerto Rico)
|
||||||
Language_et_EE=Estonian
|
Language_et_EE=Estonian
|
||||||
Language_fa_IR=Persian
|
Language_fa_IR=Persian
|
||||||
|
|||||||
@ -105,3 +105,6 @@ ReplenishmentOrdersDesc=This is list of all opened supplier orders
|
|||||||
Replenishments=Replenishments
|
Replenishments=Replenishments
|
||||||
NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s)
|
NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s)
|
||||||
NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s)
|
NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s)
|
||||||
|
MassStockMovement=Mass stock movement
|
||||||
|
SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "Add". Once this is done for all required movements, click onto "Record Tranferts".
|
||||||
|
RecordMovement=Record transfert
|
||||||
@ -1,3 +1,6 @@
|
|||||||
# Dolibarr language file - es_AR - companies
|
# Dolibarr language file - es_AR - companies
|
||||||
CHARSET=UTF-8
|
CHARSET=UTF-8
|
||||||
CompanyHasCreditNote=Este cliente tiene <b>%s %s</b> notas de crédito/anticipos disponibles
|
CompanyHasCreditNote=Este cliente tiene <b>%s %s</b> notas de crédito/anticipos disponibles
|
||||||
|
VATIntra=CUIT
|
||||||
|
VATIntraShort=CUIT
|
||||||
|
VATIntraVeryShort=CUIT
|
||||||
@ -21,6 +21,8 @@ Language_es_ES=Español
|
|||||||
Language_es_AR=Español (Argentina)
|
Language_es_AR=Español (Argentina)
|
||||||
Language_es_HN=Español (Honduras)
|
Language_es_HN=Español (Honduras)
|
||||||
Language_es_MX=Español (México)
|
Language_es_MX=Español (México)
|
||||||
|
Language_es_PY=Español (Paraguay)
|
||||||
|
Language_es_PE=Español (Perú)
|
||||||
Language_es_PR=Español (Puerto Rico)
|
Language_es_PR=Español (Puerto Rico)
|
||||||
Language_et_EE=Estonio
|
Language_et_EE=Estonio
|
||||||
Language_fa_IR=Persa
|
Language_fa_IR=Persa
|
||||||
@ -29,6 +31,7 @@ Language_fr_BE=Francés (Bélgica)
|
|||||||
Language_fr_CA=Francés (Canadá)
|
Language_fr_CA=Francés (Canadá)
|
||||||
Language_fr_CH=Francés (Suiza)
|
Language_fr_CH=Francés (Suiza)
|
||||||
Language_fr_FR=Francés
|
Language_fr_FR=Francés
|
||||||
|
Language_fr_NC=Francés (Nueva Caledonia)
|
||||||
Language_he_IL=Hebreo
|
Language_he_IL=Hebreo
|
||||||
Language_hu_HU=Húngaro
|
Language_hu_HU=Húngaro
|
||||||
Language_is_IS=Islandés
|
Language_is_IS=Islandés
|
||||||
|
|||||||
@ -1,4 +1,7 @@
|
|||||||
# Dolibarr language file - es_HN - companies
|
# Dolibarr language file - es_HN - companies
|
||||||
CHARSET=UTF-8
|
CHARSET=UTF-8
|
||||||
VATIsUsed=Sujeto a ISV
|
VATIsUsed=Sujeto a ISV
|
||||||
VATIsNotUsed=No sujeto a ISV
|
VATIsNotUsed=No sujeto a ISV
|
||||||
|
VATIntra=RTN
|
||||||
|
VATIntraShort=RTN
|
||||||
|
VATIntraVeryShort=RTN
|
||||||
@ -2,4 +2,7 @@
|
|||||||
CHARSET=UTF-8
|
CHARSET=UTF-8
|
||||||
State=Estado
|
State=Estado
|
||||||
Town=Municipio
|
Town=Municipio
|
||||||
CompanyHasCreditNote=Este cliente tiene <b>%s %s</b> notas de crédito/anticipos disponibles
|
CompanyHasCreditNote=Este cliente tiene <b>%s %s</b> notas de crédito/anticipos disponibles
|
||||||
|
VATIntra=RFC
|
||||||
|
VATIntraShort=RFC
|
||||||
|
VATIntraVeryShort=RFC
|
||||||
@ -1,4 +1,7 @@
|
|||||||
# Dolibarr language file - es_PU - companies
|
# Dolibarr language file - es_PU - companies
|
||||||
CHARSET=UTF-8
|
CHARSET=UTF-8
|
||||||
VATIsUsed=Sujeto a IGV
|
VATIsUsed=Sujeto a IGV
|
||||||
VATIsNotUsed=No sujeto a IGV
|
VATIsNotUsed=No sujeto a IGV
|
||||||
|
VATIntra=RUC
|
||||||
|
VATIntraShort=RUC
|
||||||
|
VATIntraVeryShort=RUC
|
||||||
@ -104,7 +104,7 @@ ProfId3=Professional ID 3
|
|||||||
ProfId4=Professional ID 4
|
ProfId4=Professional ID 4
|
||||||
ProfId5=Professional ID 5
|
ProfId5=Professional ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof Id 2 (Revenu brutes)
|
ProfId2AR=Prof Id 2 (Revenu brutes)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Professional-tunnuksen 3
|
|||||||
ProfId4=Professional-tunnuksen 4
|
ProfId4=Professional-tunnuksen 4
|
||||||
ProfId5=Ammatillinen tunnus 5
|
ProfId5=Ammatillinen tunnus 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof Id 2 (revenu brutes)
|
ProfId2AR=Prof Id 2 (revenu brutes)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -127,6 +127,7 @@ ErrorDateMustBeBeforeToday=La date ne peut pas être supérieure à aujourd'hui
|
|||||||
ErrorPaymentModeDefinedToWithoutSetup=Un mode de paiement a été défini de type %s mais la configuration du module Facture n'a pas été complété pour définir les informations afficher pour ce mode de paiment.
|
ErrorPaymentModeDefinedToWithoutSetup=Un mode de paiement a été défini de type %s mais la configuration du module Facture n'a pas été complété pour définir les informations afficher pour ce mode de paiment.
|
||||||
ErrorPHPNeedModule=Erreur, votre PHP doit avoir le module <b>%s</b> installé pour utiliser cette fonctionnalité.
|
ErrorPHPNeedModule=Erreur, votre PHP doit avoir le module <b>%s</b> installé pour utiliser cette fonctionnalité.
|
||||||
ErrorOpenIDSetupNotComplete=Vous avez configuré Dolibarr pour accepter l'authentication OpenID, mais l'URL du service OpenID n'est pas défini dans la constante %s
|
ErrorOpenIDSetupNotComplete=Vous avez configuré Dolibarr pour accepter l'authentication OpenID, mais l'URL du service OpenID n'est pas défini dans la constante %s
|
||||||
|
ErrorWarehouseMustDiffers=Les entrepôts source et destination doivent être différents
|
||||||
|
|
||||||
# Warnings
|
# Warnings
|
||||||
WarningMandatorySetupNotComplete=Les informations de configuration obligatoire doivent être renseignées
|
WarningMandatorySetupNotComplete=Les informations de configuration obligatoire doivent être renseignées
|
||||||
|
|||||||
@ -22,6 +22,7 @@ Language_es_AR=Espagnol (Argentine)
|
|||||||
Language_es_HN=Espagnol (Honduras)
|
Language_es_HN=Espagnol (Honduras)
|
||||||
Language_es_MX=Espagnol (Mexique)
|
Language_es_MX=Espagnol (Mexique)
|
||||||
Language_es_PY=Espagnol (Paraguay)
|
Language_es_PY=Espagnol (Paraguay)
|
||||||
|
Language_es_PE=Espagnol (Peru)
|
||||||
Language_es_PR=Espagnol (Puerto Rico)
|
Language_es_PR=Espagnol (Puerto Rico)
|
||||||
Language_et_EE=Estonien
|
Language_et_EE=Estonien
|
||||||
Language_fa_IR=Perse
|
Language_fa_IR=Perse
|
||||||
|
|||||||
@ -105,3 +105,6 @@ ReplenishmentOrdersDesc=Voici la liste des commandes fournisseurs en cours
|
|||||||
Replenishments=Réapprovisionnement
|
Replenishments=Réapprovisionnement
|
||||||
NbOfProductBeforePeriod=Quantité du produit <b>%s</b> en stock avant la période sélectionnée (< <b>%s</b>)
|
NbOfProductBeforePeriod=Quantité du produit <b>%s</b> en stock avant la période sélectionnée (< <b>%s</b>)
|
||||||
NbOfProductAfterPeriod=Quantité du produit <b>%s</b> en stock après la période sélectionnée (> <b>%s</b>)
|
NbOfProductAfterPeriod=Quantité du produit <b>%s</b> en stock après la période sélectionnée (> <b>%s</b>)
|
||||||
|
MassStockMovement=Mouvement de stock en masse
|
||||||
|
SelectProductInAndOutWareHouse=Sélectionner un produit, une quantité à transférer, un entrepôt source et destination et cliquer sur ajouter. Une fois tous les mouvements enregistrés, cliquer sur "Enregistrer transferts".
|
||||||
|
RecordMovement=Enregistrer transferts
|
||||||
@ -104,7 +104,7 @@ ProfId3=Szakmai ID 3
|
|||||||
ProfId4=Szakmai ID 4
|
ProfId4=Szakmai ID 4
|
||||||
ProfId5=Szakmai ID 5
|
ProfId5=Szakmai ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof ID 1 (CUIT / CUIL)
|
ProfId1AR=Prof ID 1 (CUIL)
|
||||||
ProfId2AR=Prof ID 2 (revenu barmok)
|
ProfId2AR=Prof ID 2 (revenu barmok)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Professional ID 3
|
|||||||
ProfId4=Professional ID 4
|
ProfId4=Professional ID 4
|
||||||
ProfId5=Professional ID 5
|
ProfId5=Professional ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / CUIL)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof Id 2 (Revenu brutes)
|
ProfId2AR=Prof Id 2 (Revenu brutes)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Professional ID 3
|
|||||||
ProfId4=Professional ID 4
|
ProfId4=Professional ID 4
|
||||||
ProfId5=Profesjonell ID 5
|
ProfId5=Profesjonell ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof ID 2 (inntekter på brutes)
|
ProfId2AR=Prof ID 2 (inntekter på brutes)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Professioneel ID 3
|
|||||||
ProfId4=Professioneel ID 4
|
ProfId4=Professioneel ID 4
|
||||||
ProfId5=Professionele ID 5
|
ProfId5=Professionele ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (Cuit / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof Id 2 (Revenu woestelingen)
|
ProfId2AR=Prof Id 2 (Revenu woestelingen)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Profesjonalne ID 3
|
|||||||
ProfId4=Profesjonalne ID 4
|
ProfId4=Profesjonalne ID 4
|
||||||
ProfId5=Profesjonalny ID 5
|
ProfId5=Profesjonalny ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Id Prof 2 (bydlęta Revenu)
|
ProfId2AR=Id Prof 2 (bydlęta Revenu)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=ID profesional 3
|
|||||||
ProfId4=ID profesional 4
|
ProfId4=ID profesional 4
|
||||||
ProfId5=Professional ID 5
|
ProfId5=Professional ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / CUIL)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Id Prof 2 (brutos Revenu)
|
ProfId2AR=Id Prof 2 (brutos Revenu)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
@ -224,9 +224,9 @@ ProfId3RU=Prof Id 3 (KPP)
|
|||||||
ProfId4RU=Prof Id 4 (OKPO)
|
ProfId4RU=Prof Id 4 (OKPO)
|
||||||
ProfId5RU=-
|
ProfId5RU=-
|
||||||
# ProfId6RU=-
|
# ProfId6RU=-
|
||||||
VATIntra=IVA Intracomunitário
|
VATIntra=CNPJ
|
||||||
VATIntraShort=IVA Intracomunitário Mínimo
|
VATIntraShort=CNPJ
|
||||||
VATIntraVeryShort=IVA Intracomunitário Nulo
|
VATIntraVeryShort=CNPJ
|
||||||
VATIntraSyntaxIsValid=Sintaxe Válida
|
VATIntraSyntaxIsValid=Sintaxe Válida
|
||||||
VATIntraValueIsValid=Valor Válido
|
VATIntraValueIsValid=Valor Válido
|
||||||
ProspectCustomer=Cliente Potencial/Cliente
|
ProspectCustomer=Cliente Potencial/Cliente
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Professional ID 3
|
|||||||
ProfId4=Professional ID 4
|
ProfId4=Professional ID 4
|
||||||
ProfId5=Professional ID 5
|
ProfId5=Professional ID 5
|
||||||
ProfId6=Profesional ID 6
|
ProfId6=Profesional ID 6
|
||||||
ProfId1AR=Id-ul prof. 1 (CUIT / Cuil)
|
ProfId1AR=Id-ul prof. 1 (CUIL)
|
||||||
ProfId2AR=Id-ul prof. 2 (Venituri brute)
|
ProfId2AR=Id-ul prof. 2 (Venituri brute)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Профессиональный ID 3
|
|||||||
ProfId4=Профессиональный ID 4
|
ProfId4=Профессиональный ID 4
|
||||||
ProfId5=Профессиональный ID 5
|
ProfId5=Профессиональный ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Проф Id 1 (CUIT / Cuil)
|
ProfId1AR=Проф Id 1 (CUIL)
|
||||||
ProfId2AR=Проф Id 2 (Revenu скоты)
|
ProfId2AR=Проф Id 2 (Revenu скоты)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Professionella ID 3
|
|||||||
ProfId4=Professionella ID 4
|
ProfId4=Professionella ID 4
|
||||||
ProfId5=Professionell ID 5
|
ProfId5=Professionell ID 5
|
||||||
# ProfId6=Professional ID 6
|
# ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof Id 2 (Revenu sällar)
|
ProfId2AR=Prof Id 2 (Revenu sällar)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
@ -104,7 +104,7 @@ ProfId3=Profesyonel ID 3
|
|||||||
ProfId4=Profesyonel ID 4
|
ProfId4=Profesyonel ID 4
|
||||||
ProfId5=Profesyonel ID 5
|
ProfId5=Profesyonel ID 5
|
||||||
ProfId6=Professional ID 6
|
ProfId6=Professional ID 6
|
||||||
ProfId1AR=Prof Id 1 (CUIT / Cuil)
|
ProfId1AR=Prof Id 1 (CUIL)
|
||||||
ProfId2AR=Prof Id 2 (revenu canavarlar)
|
ProfId2AR=Prof Id 2 (revenu canavarlar)
|
||||||
ProfId3AR=-
|
ProfId3AR=-
|
||||||
ProfId4AR=-
|
ProfId4AR=-
|
||||||
|
|||||||
247
htdocs/product/stock/massstockmove.php
Normal file
247
htdocs/product/stock/massstockmove.php
Normal file
@ -0,0 +1,247 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2013 Laurent Destaileur <ely@users.sourceforge.net>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/product/stock/massstockmove.php
|
||||||
|
* \ingroup stock
|
||||||
|
* \brief This page allows to select several products, then incoming warehouse and
|
||||||
|
* outgoing warehouse and create all stock movements for this.
|
||||||
|
*/
|
||||||
|
|
||||||
|
require '../../main.inc.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/json.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
|
|
||||||
|
$langs->load("products");
|
||||||
|
$langs->load("stocks");
|
||||||
|
$langs->load("orders");
|
||||||
|
|
||||||
|
// Security check
|
||||||
|
if ($user->societe_id) {
|
||||||
|
$socid = $user->societe_id;
|
||||||
|
}
|
||||||
|
$result=restrictedArea($user,'produit|service');
|
||||||
|
|
||||||
|
//checks if a product has been ordered
|
||||||
|
|
||||||
|
$action = GETPOST('action','alpha');
|
||||||
|
$id_product = GETPOST('productid', 'productid');
|
||||||
|
$id_sw = GETPOST('id_sw', 'id_sw');
|
||||||
|
$id_tw = GETPOST('id_tw', 'id_tw');
|
||||||
|
$qty = GETPOST('qty');
|
||||||
|
$idline = GETPOST('idline');
|
||||||
|
|
||||||
|
$sortfield = GETPOST('sortfield','alpha');
|
||||||
|
$sortorder = GETPOST('sortorder','alpha');
|
||||||
|
$page = GETPOST('page','int');
|
||||||
|
|
||||||
|
if (!$sortfield) {
|
||||||
|
$sortfield = 'p.ref';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$sortorder) {
|
||||||
|
$sortorder = 'ASC';
|
||||||
|
}
|
||||||
|
$limit = $conf->liste_limit;
|
||||||
|
$offset = $limit * $page ;
|
||||||
|
|
||||||
|
$listofdata=array();
|
||||||
|
if (! empty($_SESSION['massstockmove'])) $listofdata=dol_json_decode($_SESSION['massstockmove'],true);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actions
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ($action == 'addline')
|
||||||
|
{
|
||||||
|
if (! ($id_product > 0))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Product")),'errors');
|
||||||
|
}
|
||||||
|
if (! $qty)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Qty")),'errors');
|
||||||
|
}
|
||||||
|
if (! ($id_sw > 0))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("WarehouseSource")),'errors');
|
||||||
|
}
|
||||||
|
if (! ($id_tw > 0))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("WarehouseTarget")),'errors');
|
||||||
|
}
|
||||||
|
if ($id_sw > 0 && $id_tw == $id_sw)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$langs->load("errors");
|
||||||
|
setEventMessage($langs->trans("ErrorWarehouseMustDiffers"),'errors');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$id=count($listofdata);
|
||||||
|
$listofdata[$id]=array('id'=>$id, 'id_product'=>$id_product, 'qty'=>$qty, 'id_sw'=>$id_sw, 'id_tw'=>$id_tw);
|
||||||
|
$_SESSION['massstockmove']=dol_json_encode($listofdata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($action == 'delline' && $idline != '')
|
||||||
|
{
|
||||||
|
if (! empty($listofdata[$idline])) unset($listofdata[$idline]);
|
||||||
|
var_dump($listofdata);
|
||||||
|
var_dump(dol_json_encode($listofdata)); exit;
|
||||||
|
if (count($listofdata) > 0) $_SESSION['massstockmove']=dol_json_encode($listofdata);
|
||||||
|
else unset($_SESSION['massstockmove']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($action == 'createmovement' && isset($_POST['valid']))
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
$form=new Form($db);
|
||||||
|
$formproduct=new FormProduct($db);
|
||||||
|
$productstatic = new Product($db);
|
||||||
|
$warehousestatics = new Entrepot($db);
|
||||||
|
$warehousestatict = new Entrepot($db);
|
||||||
|
|
||||||
|
$title = $langs->trans('MassMovement');
|
||||||
|
|
||||||
|
llxHeader('', $title, $helpurl, '');
|
||||||
|
|
||||||
|
print_fiche_titre($langs->trans("MassStockMovement")).'<br><br>';
|
||||||
|
|
||||||
|
print $langs->trans("SelectProductInAndOutWareHouse").'<br>';
|
||||||
|
|
||||||
|
|
||||||
|
// Form to add a line
|
||||||
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" name="formulaire">';
|
||||||
|
print '<input type="hidden" name="token" value="' .$_SESSION['newtoken'] . '">';
|
||||||
|
print '<input type="hidden" name="action" value="addline">';
|
||||||
|
|
||||||
|
print '<table class="liste" width="100%">';
|
||||||
|
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print_liste_field_titre($langs->trans('Product'),$_SERVER["PHP_SELF"],'',$param,'','',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans('Qty'),$_SERVER["PHP_SELF"],'',$param,'','align="center"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans('WarehouseSource'),$_SERVER["PHP_SELF"],'',$param,'','align="center"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans('WarehouseTarget'),$_SERVER["PHP_SELF"],'',$param,'','align="center"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre('');
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
print '<tr>';
|
||||||
|
// Product
|
||||||
|
print '<td>';
|
||||||
|
$filtertype=0;
|
||||||
|
if (! empty($conf->global->STOCK_SUPPORTS_SERVICES)) $filtertype='';
|
||||||
|
print $form->select_produits($id_product,'productid',$filtertype);
|
||||||
|
print '</td>';
|
||||||
|
// Qty
|
||||||
|
print '<td align="center"><input type="input" size="4" class="flat" name="qty" value="'.$qty.'"></td>';
|
||||||
|
// In warehouse
|
||||||
|
print '<td align="center">';
|
||||||
|
print $formproduct->selectWarehouses($id_sw,'id_sw','',1);
|
||||||
|
print '</td>';
|
||||||
|
// Out warehouse
|
||||||
|
print '<td align="center">';
|
||||||
|
print $formproduct->selectWarehouses($id_tw,'id_tw','',1);
|
||||||
|
print '</td>';
|
||||||
|
// Button to add line
|
||||||
|
print '<td align="right"><input type="submit" class="button" name="addline" value="'.dol_escape_htmltag($langs->trans("Add")).'"></td>';
|
||||||
|
|
||||||
|
print '</tr>';
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
// List movement prepared
|
||||||
|
print '<table class="liste" width="100%">';
|
||||||
|
|
||||||
|
// Lignes des titres
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print_liste_field_titre($langs->trans('ProductRef'),$_SERVER["PHP_SELF"],'p.ref',$param,'','',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans('ProductLabel'),$_SERVER["PHP_SELF"],'p.label',$param,'','',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans('Qty'),$_SERVER["PHP_SELF"],'',$param,'','align="right"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans('WarehouseSource'),$_SERVER["PHP_SELF"],'',$param,'','align="right"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans('WarehouseTarget'),$_SERVER["PHP_SELF"],'',$param,'','align="right"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre('');
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
$var=false;
|
||||||
|
foreach($listofdata as $key => $val)
|
||||||
|
{
|
||||||
|
$var=!$var;
|
||||||
|
|
||||||
|
$productstatic->fetch($val['id_product']);
|
||||||
|
$warehousestatics->fetch($val['id_sw']);
|
||||||
|
$warehousestatict->fetch($val['id_tw']);
|
||||||
|
|
||||||
|
print '<tr '.$bc[$var].'>';
|
||||||
|
print '<td>'.$productstatic->getNomUrl(1).'</td>';
|
||||||
|
print '<td>';
|
||||||
|
$oldref=$productstatic->ref;
|
||||||
|
$productstatic->ref=$productstatic->label;
|
||||||
|
print $productstatic->getNomUrl(1);
|
||||||
|
$productstatic->ref=$oldref;
|
||||||
|
print '</td>';
|
||||||
|
print '<td align="right">'.$val['qty'].'</td>';
|
||||||
|
print '<td align="right">';
|
||||||
|
print $warehousestatics->getNomUrl(1);
|
||||||
|
print '</td>';
|
||||||
|
print '<td align="right">';
|
||||||
|
print $warehousestatict->getNomUrl(1);
|
||||||
|
print '</td>';
|
||||||
|
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=delline&idline='.$val['id'].'">'.img_delete($langs->trans("Remove")).'</a></td>';
|
||||||
|
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
// Generate
|
||||||
|
$value=$langs->trans("RecordMovement");
|
||||||
|
print '<div class="center"><input class="button" type="submit" name="valid" value="'.$value.'"></div>';
|
||||||
|
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
|
|
||||||
|
llxFooter();
|
||||||
|
|
||||||
|
$db->close();
|
||||||
|
?>
|
||||||
@ -460,14 +460,14 @@ if ($resql)
|
|||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
$arrayofuniqueproduct=array();
|
$arrayofuniqueproduct=array();
|
||||||
|
|
||||||
$var=True;
|
$var=True;
|
||||||
while ($i < min($num,$conf->liste_limit))
|
while ($i < min($num,$conf->liste_limit))
|
||||||
{
|
{
|
||||||
$objp = $db->fetch_object($resql);
|
$objp = $db->fetch_object($resql);
|
||||||
|
|
||||||
$arrayofuniqueproduct[$objp->rowid]=$objp->produit;
|
$arrayofuniqueproduct[$objp->rowid]=$objp->produit;
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print "<tr ".$bc[$var].">";
|
print "<tr ".$bc[$var].">";
|
||||||
// Id movement
|
// Id movement
|
||||||
@ -517,7 +517,7 @@ if ($resql)
|
|||||||
if (count($arrayofuniqueproduct) == 1)
|
if (count($arrayofuniqueproduct) == 1)
|
||||||
{
|
{
|
||||||
$productidselected=0;
|
$productidselected=0;
|
||||||
foreach ($arrayofuniqueproduct as $key => $val)
|
foreach ($arrayofuniqueproduct as $key => $val)
|
||||||
{
|
{
|
||||||
$productidselected=$key;
|
$productidselected=$key;
|
||||||
$productlabelselected=$val;
|
$productlabelselected=$val;
|
||||||
@ -533,16 +533,16 @@ if ($resql)
|
|||||||
//print '<td class="liste_total" colspan="6" align="right">';
|
//print '<td class="liste_total" colspan="6" align="right">';
|
||||||
print ': '.$balancebefore;
|
print ': '.$balancebefore;
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
//print '</td></tr>';
|
//print '</td></tr>';
|
||||||
//print '<tr class="total"><td class="liste_total">';
|
//print '<tr class="total"><td class="liste_total">';
|
||||||
print $langs->trans("NbOfProductAfterPeriod", $productlabelselected, dol_print_date($dateafter,'day','gmt'));
|
print $langs->trans("NbOfProductAfterPeriod", $productlabelselected, dol_print_date($dateafter,'day','gmt'));
|
||||||
//print '</td>';
|
//print '</td>';
|
||||||
//print '<td class="liste_total" colspan="6" align="right">';
|
//print '<td class="liste_total" colspan="6" align="right">';
|
||||||
print ': '.$balanceafter;
|
print ': '.$balanceafter;
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
//print '</td></tr>';
|
//print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/product/stock/replenish.php
|
* \file htdocs/product/stock/replenish.php
|
||||||
* \ingroup produit
|
* \ingroup stock
|
||||||
* \brief Page to list stocks to replenish
|
* \brief Page to list stocks to replenish
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -75,8 +75,7 @@ if (isset($_POST['button_removefilter']) || isset($_POST['valid']))
|
|||||||
$salert = '';
|
$salert = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
//orders creation
|
// Create orders
|
||||||
//TODO: could go in the lib
|
|
||||||
if ($action == 'order' && isset($_POST['valid']))
|
if ($action == 'order' && isset($_POST['valid']))
|
||||||
{
|
{
|
||||||
$linecount = GETPOST('linecount', 'int');
|
$linecount = GETPOST('linecount', 'int');
|
||||||
@ -240,7 +239,7 @@ $i = 0;
|
|||||||
$helpurl = 'EN:Module_Stocks_En|FR:Module_Stock|';
|
$helpurl = 'EN:Module_Stocks_En|FR:Module_Stock|';
|
||||||
$helpurl .= 'ES:Módulo_Stocks';
|
$helpurl .= 'ES:Módulo_Stocks';
|
||||||
|
|
||||||
llxHeader('', $title, $helpurl, $title);
|
llxHeader('', $title, $helpurl, '');
|
||||||
|
|
||||||
$head = array();
|
$head = array();
|
||||||
$head[0][0] = DOL_URL_ROOT.'/product/stock/replenish.php';
|
$head[0][0] = DOL_URL_ROOT.'/product/stock/replenish.php';
|
||||||
@ -285,7 +284,7 @@ if ($sref || $snom || $sall || $salert || GETPOST('search', 'alpha')) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<form action="replenish.php" method="post" name="formulaire">'.
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" name="formulaire">'.
|
||||||
'<input type="hidden" name="token" value="' .$_SESSION['newtoken'] . '">'.
|
'<input type="hidden" name="token" value="' .$_SESSION['newtoken'] . '">'.
|
||||||
'<input type="hidden" name="sortfield" value="' . $sortfield . '">'.
|
'<input type="hidden" name="sortfield" value="' . $sortfield . '">'.
|
||||||
'<input type="hidden" name="sortorder" value="' . $sortorder . '">'.
|
'<input type="hidden" name="sortorder" value="' . $sortorder . '">'.
|
||||||
@ -304,7 +303,7 @@ print '<tr class="liste_titre">'.
|
|||||||
'<td><input type="checkbox" onClick="toggle(this)" /></td>';
|
'<td><input type="checkbox" onClick="toggle(this)" /></td>';
|
||||||
print_liste_field_titre(
|
print_liste_field_titre(
|
||||||
$langs->trans('Ref'),
|
$langs->trans('Ref'),
|
||||||
'replenish.php',
|
$_SERVER["PHP_SELF"],
|
||||||
'p.ref',
|
'p.ref',
|
||||||
$param,
|
$param,
|
||||||
'',
|
'',
|
||||||
@ -314,7 +313,7 @@ print_liste_field_titre(
|
|||||||
);
|
);
|
||||||
print_liste_field_titre(
|
print_liste_field_titre(
|
||||||
$langs->trans('Label'),
|
$langs->trans('Label'),
|
||||||
'replenish.php',
|
$_SERVER["PHP_SELF"],
|
||||||
'p.label',
|
'p.label',
|
||||||
$param,
|
$param,
|
||||||
'',
|
'',
|
||||||
@ -326,7 +325,7 @@ if (!empty($conf->service->enabled) && $type == 1)
|
|||||||
{
|
{
|
||||||
print_liste_field_titre(
|
print_liste_field_titre(
|
||||||
$langs->trans('Duration'),
|
$langs->trans('Duration'),
|
||||||
'replenish.php',
|
$_SERVER["PHP_SELF"],
|
||||||
'p.duration',
|
'p.duration',
|
||||||
$param,
|
$param,
|
||||||
'',
|
'',
|
||||||
@ -337,7 +336,7 @@ if (!empty($conf->service->enabled) && $type == 1)
|
|||||||
}
|
}
|
||||||
print_liste_field_titre(
|
print_liste_field_titre(
|
||||||
$langs->trans('DesiredStock'),
|
$langs->trans('DesiredStock'),
|
||||||
'replenish.php',
|
$_SERVER["PHP_SELF"],
|
||||||
'p.desiredstock',
|
'p.desiredstock',
|
||||||
$param,
|
$param,
|
||||||
'',
|
'',
|
||||||
@ -355,7 +354,7 @@ else
|
|||||||
}
|
}
|
||||||
print_liste_field_titre(
|
print_liste_field_titre(
|
||||||
$stocklabel,
|
$stocklabel,
|
||||||
'replenish.php',
|
$_SERVER["PHP_SELF"],
|
||||||
'stock_physique',
|
'stock_physique',
|
||||||
$param,
|
$param,
|
||||||
'',
|
'',
|
||||||
@ -365,7 +364,7 @@ print_liste_field_titre(
|
|||||||
);
|
);
|
||||||
print_liste_field_titre(
|
print_liste_field_titre(
|
||||||
$langs->trans('Ordered'),
|
$langs->trans('Ordered'),
|
||||||
'replenish.php',
|
$_SERVER["PHP_SELF"],
|
||||||
'',
|
'',
|
||||||
$param,
|
$param,
|
||||||
'',
|
'',
|
||||||
@ -375,7 +374,7 @@ print_liste_field_titre(
|
|||||||
);
|
);
|
||||||
print_liste_field_titre(
|
print_liste_field_titre(
|
||||||
$langs->trans('StockToBuy'),
|
$langs->trans('StockToBuy'),
|
||||||
'replenish.php',
|
$_SERVER["PHP_SELF"],
|
||||||
'',
|
'',
|
||||||
$param,
|
$param,
|
||||||
'',
|
'',
|
||||||
@ -385,7 +384,7 @@ print_liste_field_titre(
|
|||||||
);
|
);
|
||||||
print_liste_field_titre(
|
print_liste_field_titre(
|
||||||
$langs->trans('Supplier'),
|
$langs->trans('Supplier'),
|
||||||
'replenish.php',
|
$_SERVER["PHP_SELF"],
|
||||||
'',
|
'',
|
||||||
$param,
|
$param,
|
||||||
'',
|
'',
|
||||||
@ -427,7 +426,7 @@ while ($i < min($num, $limit))
|
|||||||
{
|
{
|
||||||
$objp = $db->fetch_object($resql);
|
$objp = $db->fetch_object($resql);
|
||||||
|
|
||||||
if ($conf->global->STOCK_SUPPORTS_SERVICES || $objp->fk_product_type == 0)
|
if (! empty($conf->global->STOCK_SUPPORTS_SERVICES) || $objp->fk_product_type == 0)
|
||||||
{
|
{
|
||||||
// Multilangs
|
// Multilangs
|
||||||
if (! empty($conf->global->MAIN_MULTILANGS))
|
if (! empty($conf->global->MAIN_MULTILANGS))
|
||||||
@ -541,14 +540,14 @@ while ($i < min($num, $limit))
|
|||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
$value = $langs->trans("CreateOrders");
|
|
||||||
print '</table>'.
|
print '</table>'.
|
||||||
'</div>'.
|
|
||||||
'<table width="100%">'.
|
|
||||||
'<tr><td align="center">'.
|
$value=$langs->trans("CreateOrders");
|
||||||
'<input class="button" type="submit" name="valid" value="' . $value . '">'.
|
print '<div class="center"><input class="button" type="submit" name="valid" value="'.$value.'"></div>';
|
||||||
'</td></tr></table>'.
|
|
||||||
'</form>';
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
if ($num > $conf->liste_limit)
|
if ($num > $conf->liste_limit)
|
||||||
{
|
{
|
||||||
@ -591,6 +590,10 @@ if ($num > $conf->liste_limit)
|
|||||||
|
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
|
||||||
|
|
||||||
|
// TODO Replace this with jquery
|
||||||
print '
|
print '
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function toggle(source)
|
function toggle(source)
|
||||||
|
|||||||
@ -18,9 +18,10 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/product/stock/replenishorders.php
|
* \file htdocs/product/stock/replenishorders.php
|
||||||
* \ingroup produit
|
* \ingroup stock
|
||||||
* \brief Page to list replenishment orders
|
* \brief Page to list replenishment orders
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
@ -37,10 +38,18 @@ $langs->load("orders");
|
|||||||
if ($user->societe_id) $socid=$user->societe_id;
|
if ($user->societe_id) $socid=$user->societe_id;
|
||||||
$result=restrictedArea($user,'produit|service');
|
$result=restrictedArea($user,'produit|service');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
$helpurl = 'EN:Module_Stocks_En|FR:Module_Stock|';
|
$helpurl = 'EN:Module_Stocks_En|FR:Module_Stock|';
|
||||||
$helpurl .= 'ES:Módulo_Stocks';
|
$helpurl .= 'ES:Módulo_Stocks';
|
||||||
$texte = $langs->trans('ReplenishmentOrders');
|
$texte = $langs->trans('ReplenishmentOrders');
|
||||||
llxHeader('', $texte, $helpurl, $texte);
|
|
||||||
|
llxHeader('', $texte, $helpurl, '');
|
||||||
|
|
||||||
$head = array();
|
$head = array();
|
||||||
$head[0][0] = DOL_URL_ROOT.'/product/stock/replenish.php';
|
$head[0][0] = DOL_URL_ROOT.'/product/stock/replenish.php';
|
||||||
$head[0][1] = $langs->trans('Status');
|
$head[0][1] = $langs->trans('Status');
|
||||||
@ -150,7 +159,7 @@ if ($resql)
|
|||||||
print_barre_liste(
|
print_barre_liste(
|
||||||
'',
|
'',
|
||||||
$page,
|
$page,
|
||||||
'replenishorders.php',
|
$_SERVER["PHP_SELF"],
|
||||||
'',
|
'',
|
||||||
$sortfield,
|
$sortfield,
|
||||||
$sortorder,
|
$sortorder,
|
||||||
@ -159,7 +168,7 @@ if ($resql)
|
|||||||
0,
|
0,
|
||||||
''
|
''
|
||||||
);
|
);
|
||||||
print '<form action="replenishorders.php" method="GET">'.
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="GET">'.
|
||||||
'<table class="noborder" width="100%">'.
|
'<table class="noborder" width="100%">'.
|
||||||
'<tr class="liste_titre">';
|
'<tr class="liste_titre">';
|
||||||
print_liste_field_titre(
|
print_liste_field_titre(
|
||||||
@ -308,6 +317,8 @@ if ($resql)
|
|||||||
'</form>';
|
'</form>';
|
||||||
|
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -315,4 +326,6 @@ else
|
|||||||
}
|
}
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
|
?>
|
||||||
@ -130,22 +130,35 @@ class JsonLibTest extends PHPUnit_Framework_TestCase
|
|||||||
$this->savlangs=$langs;
|
$this->savlangs=$langs;
|
||||||
$this->savdb=$db;
|
$this->savdb=$db;
|
||||||
|
|
||||||
|
// Do a test with an array starting with 0
|
||||||
$arraytotest=array(0=>array('key'=>1,'value'=>'PRODREF','label'=>'Product ref with é and special chars \\ \' "'));
|
$arraytotest=array(0=>array('key'=>1,'value'=>'PRODREF','label'=>'Product ref with é and special chars \\ \' "'));
|
||||||
|
$arrayencodedexpected='[{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}]';
|
||||||
|
|
||||||
$encoded=json_encode($arraytotest);
|
$encoded=json_encode($arraytotest);
|
||||||
//var_dump($encoded);
|
$this->assertEquals($arrayencodedexpected,$encoded);
|
||||||
$this->assertEquals('[{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}]',$encoded);
|
|
||||||
$decoded=json_decode($encoded,true);
|
$decoded=json_decode($encoded,true);
|
||||||
//var_dump($decoded);
|
$this->assertEquals($arraytotest,$decoded,'test for json_xxx');
|
||||||
$this->assertEquals($arraytotest,$decoded);
|
|
||||||
|
|
||||||
$encoded=dol_json_encode($arraytotest);
|
$encoded=dol_json_encode($arraytotest);
|
||||||
//var_dump($encoded);
|
$this->assertEquals($arrayencodedexpected,$encoded);
|
||||||
$this->assertEquals('[{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}]',$encoded);
|
|
||||||
$decoded=dol_json_decode($encoded,true);
|
$decoded=dol_json_decode($encoded,true);
|
||||||
//var_dump($decoded);
|
$this->assertEquals($arraytotest,$decoded,'test for dol_json_xxx');
|
||||||
$this->assertEquals($arraytotest,$decoded);
|
|
||||||
|
|
||||||
|
// Same test but array start with 2 instead of 0
|
||||||
|
$arraytotest=array(2=>array('key'=>1,'value'=>'PRODREF','label'=>'Product ref with é and special chars \\ \' "'));
|
||||||
|
$arrayencodedexpected='{"2":{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}}';
|
||||||
|
|
||||||
|
$encoded=json_encode($arraytotest);
|
||||||
|
$this->assertEquals($arrayencodedexpected,$encoded);
|
||||||
|
$decoded=json_decode($encoded,true);
|
||||||
|
$this->assertEquals($arraytotest,$decoded,'test for json_xxx');
|
||||||
|
|
||||||
|
$encoded=dol_json_encode($arraytotest);
|
||||||
|
$this->assertEquals($arrayencodedexpected,$encoded);
|
||||||
|
$decoded=dol_json_decode($encoded,true);
|
||||||
|
$this->assertEquals($arraytotest,$decoded,'test for dol_json_xxx');
|
||||||
|
|
||||||
|
// Test with object
|
||||||
$now=gmmktime(12,0,0,1,1,1970);
|
$now=gmmktime(12,0,0,1,1,1970);
|
||||||
$objecttotest=new stdClass();
|
$objecttotest=new stdClass();
|
||||||
$objecttotest->property1='abc';
|
$objecttotest->property1='abc';
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user