Merge branch '14.0' of git@github.com:Dolibarr/dolibarr.git into develop
This commit is contained in:
commit
5779a56ae0
@ -263,6 +263,7 @@ if ($conf->facture->enabled) {
|
|||||||
print '<tr class="oddeven"><td>'.$langs->trans("ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS").'</td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$selected = (empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) ? '' : $conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS);
|
$selected = (empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) ? '' : $conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS);
|
||||||
|
print img_picto('', 'product', 'class="pictofixedwidth"');
|
||||||
$form->select_produits($selected, 'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS', '', 0);
|
$form->select_produits($selected, 'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS', '', 0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1054,6 +1054,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
// Country
|
// Country
|
||||||
$object->country_id = $object->country_id ? $object->country_id : $mysoc->country_id;
|
$object->country_id = $object->country_id ? $object->country_id : $mysoc->country_id;
|
||||||
print '<tr><td width="25%">'.$langs->trans('Country').'</td><td>';
|
print '<tr><td width="25%">'.$langs->trans('Country').'</td><td>';
|
||||||
|
print img_picto('', 'country', 'class="pictofixedwidth"');
|
||||||
print $form->select_country(GETPOSTISSET('country_id') ? GETPOST('country_id', 'alpha') : $object->country_id, 'country_id');
|
print $form->select_country(GETPOSTISSET('country_id') ? GETPOST('country_id', 'alpha') : $object->country_id, 'country_id');
|
||||||
if ($user->admin) {
|
if ($user->admin) {
|
||||||
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||||
@ -1064,6 +1065,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
if (empty($conf->global->MEMBER_DISABLE_STATE)) {
|
if (empty($conf->global->MEMBER_DISABLE_STATE)) {
|
||||||
print '<tr><td>'.$langs->trans('State').'</td><td>';
|
print '<tr><td>'.$langs->trans('State').'</td><td>';
|
||||||
if ($object->country_id) {
|
if ($object->country_id) {
|
||||||
|
print img_picto('', 'state', 'class="pictofixedwidth"');
|
||||||
print $formcompany->select_state(GETPOSTISSET('state_id') ? GETPOST('state_id', 'int') : $object->state_id, $object->country_code);
|
print $formcompany->select_state(GETPOSTISSET('state_id') ? GETPOST('state_id', 'int') : $object->state_id, $object->country_code);
|
||||||
} else {
|
} else {
|
||||||
print $countrynotdefined;
|
print $countrynotdefined;
|
||||||
@ -1303,6 +1305,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
// Country
|
// Country
|
||||||
//$object->country_id=$object->country_id?$object->country_id:$mysoc->country_id; // In edit mode we don't force to company country if not defined
|
//$object->country_id=$object->country_id?$object->country_id:$mysoc->country_id; // In edit mode we don't force to company country if not defined
|
||||||
print '<tr><td>'.$langs->trans('Country').'</td><td>';
|
print '<tr><td>'.$langs->trans('Country').'</td><td>';
|
||||||
|
print img_picto('', 'country', 'class="pictofixedwidth"');
|
||||||
print $form->select_country(GETPOSTISSET("country_id") ? GETPOST("country_id", "alpha") : $object->country_id, 'country_id');
|
print $form->select_country(GETPOSTISSET("country_id") ? GETPOST("country_id", "alpha") : $object->country_id, 'country_id');
|
||||||
if ($user->admin) {
|
if ($user->admin) {
|
||||||
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||||
@ -1312,21 +1315,22 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
// State
|
// State
|
||||||
if (empty($conf->global->MEMBER_DISABLE_STATE)) {
|
if (empty($conf->global->MEMBER_DISABLE_STATE)) {
|
||||||
print '<tr><td>'.$langs->trans('State').'</td><td>';
|
print '<tr><td>'.$langs->trans('State').'</td><td>';
|
||||||
|
print img_picto('', 'state', 'class="pictofixedwidth"');
|
||||||
print $formcompany->select_state($object->state_id, GETPOSTISSET("country_id") ? GETPOST("country_id", "alpha") : $object->country_id);
|
print $formcompany->select_state($object->state_id, GETPOSTISSET("country_id") ? GETPOST("country_id", "alpha") : $object->country_id);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pro phone
|
// Pro phone
|
||||||
print '<tr><td>'.$langs->trans("PhonePro").'</td>';
|
print '<tr><td>'.$langs->trans("PhonePro").'</td>';
|
||||||
print '<td>'.img_picto('', 'object_phoning').' <input type="text" name="phone" value="'.(GETPOSTISSET("phone") ? GETPOST("phone") : $object->phone).'"></td></tr>';
|
print '<td>'.img_picto('', 'object_phoning', 'class="pictofixedwidth"').' <input type="text" name="phone" value="'.(GETPOSTISSET("phone") ? GETPOST("phone") : $object->phone).'"></td></tr>';
|
||||||
|
|
||||||
// Personal phone
|
// Personal phone
|
||||||
print '<tr><td>'.$langs->trans("PhonePerso").'</td>';
|
print '<tr><td>'.$langs->trans("PhonePerso").'</td>';
|
||||||
print '<td>'.img_picto('', 'object_phoning').' <input type="text" name="phone_perso" value="'.(GETPOSTISSET("phone_perso") ? GETPOST("phone_perso") : $object->phone_perso).'"></td></tr>';
|
print '<td>'.img_picto('', 'object_phoning', 'class="pictofixedwidth"').' <input type="text" name="phone_perso" value="'.(GETPOSTISSET("phone_perso") ? GETPOST("phone_perso") : $object->phone_perso).'"></td></tr>';
|
||||||
|
|
||||||
// Mobile phone
|
// Mobile phone
|
||||||
print '<tr><td>'.$langs->trans("PhoneMobile").'</td>';
|
print '<tr><td>'.$langs->trans("PhoneMobile").'</td>';
|
||||||
print '<td>'.img_picto('', 'object_phoning_mobile').' <input type="text" name="phone_mobile" value="'.(GETPOSTISSET("phone_mobile") ? GETPOST("phone_mobile") : $object->phone_mobile).'"></td></tr>';
|
print '<td>'.img_picto('', 'object_phoning_mobile', 'class="pictofixedwidth"').' <input type="text" name="phone_mobile" value="'.(GETPOSTISSET("phone_mobile") ? GETPOST("phone_mobile") : $object->phone_mobile).'"></td></tr>';
|
||||||
|
|
||||||
if (!empty($conf->socialnetworks->enabled)) {
|
if (!empty($conf->socialnetworks->enabled)) {
|
||||||
foreach ($socialnetworks as $key => $value) {
|
foreach ($socialnetworks as $key => $value) {
|
||||||
|
|||||||
@ -131,7 +131,7 @@ print '<input name="town" class="minwidth100" id="town" value="'.(GETPOSTISSET('
|
|||||||
|
|
||||||
// Country
|
// Country
|
||||||
print '<tr class="oddeven"><td><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td class="maxwidthonsmartphone">';
|
print '<tr class="oddeven"><td><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td class="maxwidthonsmartphone">';
|
||||||
print img_picto('', 'globe-americas', 'class="paddingrightonly"');
|
print img_picto('', 'globe-americas', 'class="pictofixedwidth"');
|
||||||
print $form->select_country((GETPOSTISSET('country_id') ? GETPOST('country_id', 'int') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY) ? $conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY : '')), 'country_id');
|
print $form->select_country((GETPOSTISSET('country_id') ? GETPOST('country_id', 'int') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY) ? $conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY : '')), 'country_id');
|
||||||
if ($user->admin) {
|
if ($user->admin) {
|
||||||
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||||
@ -139,27 +139,28 @@ if ($user->admin) {
|
|||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
print '<tr class="oddeven"><td><label for="state_id">'.$langs->trans("State").'</label></td><td class="maxwidthonsmartphone">';
|
print '<tr class="oddeven"><td><label for="state_id">'.$langs->trans("State").'</label></td><td class="maxwidthonsmartphone">';
|
||||||
$formcompany->select_departement((GETPOSTISSET('state_id') ? GETPOST('state_id', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_STATE) ? $conf->global->MAIN_INFO_ACCOUNTANT_STATE : '')), (GETPOSTISSET('country_id') ? GETPOST('country_id', 'int') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY) ? $conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY : '')), 'state_id');
|
print img_picto('', 'state', 'class="pictofixedwidth"');
|
||||||
|
print $formcompany->select_state((GETPOSTISSET('state_id') ? GETPOST('state_id', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_STATE) ? $conf->global->MAIN_INFO_ACCOUNTANT_STATE : '')), (GETPOSTISSET('country_id') ? GETPOST('country_id', 'int') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY) ? $conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY : '')), 'state_id');
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
print '<tr class="oddeven"><td><label for="phone">'.$langs->trans("Phone").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="phone">'.$langs->trans("Phone").'</label></td><td>';
|
||||||
print img_picto('', 'object_phoning', '', false, 0, 0, '', 'paddingright');
|
print img_picto('', 'object_phoning', '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
print '<input name="tel" id="phone" class="maxwidth150 widthcentpercentminusx" value="'.(GETPOSTISSET('tel') ? GETPOST('tel', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_PHONE) ? $conf->global->MAIN_INFO_ACCOUNTANT_PHONE : '')).'"></td></tr>';
|
print '<input name="tel" id="phone" class="maxwidth150 widthcentpercentminusx" value="'.(GETPOSTISSET('tel') ? GETPOST('tel', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_PHONE) ? $conf->global->MAIN_INFO_ACCOUNTANT_PHONE : '')).'"></td></tr>';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
print '<tr class="oddeven"><td><label for="fax">'.$langs->trans("Fax").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="fax">'.$langs->trans("Fax").'</label></td><td>';
|
||||||
print img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'paddingright');
|
print img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
print '<input name="fax" id="fax" class="maxwidth150 widthcentpercentminusx" value="'.(GETPOSTISSET('fax') ? GETPOST('fax', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_FAX) ? $conf->global->MAIN_INFO_ACCOUNTANT_FAX : '')).'"></td></tr>';
|
print '<input name="fax" id="fax" class="maxwidth150 widthcentpercentminusx" value="'.(GETPOSTISSET('fax') ? GETPOST('fax', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_FAX) ? $conf->global->MAIN_INFO_ACCOUNTANT_FAX : '')).'"></td></tr>';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
print '<tr class="oddeven"><td><label for="email">'.$langs->trans("EMail").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="email">'.$langs->trans("EMail").'</label></td><td>';
|
||||||
print img_picto('', 'object_email', '', false, 0, 0, '', 'paddingright');
|
print img_picto('', 'object_email', '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
print '<input name="mail" id="email" class="maxwidth150 widthcentpercentminusx" value="'.(GETPOSTISSET('mail') ? GETPOST('mail', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_MAIL) ? $conf->global->MAIN_INFO_ACCOUNTANT_MAIL : '')).'"></td></tr>';
|
print '<input name="mail" id="email" class="maxwidth150 widthcentpercentminusx" value="'.(GETPOSTISSET('mail') ? GETPOST('mail', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_MAIL) ? $conf->global->MAIN_INFO_ACCOUNTANT_MAIL : '')).'"></td></tr>';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
// Web
|
// Web
|
||||||
print '<tr class="oddeven"><td><label for="web">'.$langs->trans("Web").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="web">'.$langs->trans("Web").'</label></td><td>';
|
||||||
print img_picto('', 'globe', '', false, 0, 0, '', 'paddingright');
|
print img_picto('', 'globe', '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
print '<input name="web" id="web" class="maxwidth300 widthcentpercentminusx" value="'.(GETPOSTISSET('web') ? GETPOST('web', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_WEB) ? $conf->global->MAIN_INFO_ACCOUNTANT_WEB : '')).'"></td></tr>';
|
print '<input name="web" id="web" class="maxwidth300 widthcentpercentminusx" value="'.(GETPOSTISSET('web') ? GETPOST('web', 'alpha') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_WEB) ? $conf->global->MAIN_INFO_ACCOUNTANT_WEB : '')).'"></td></tr>';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
|
|||||||
@ -417,7 +417,7 @@ print '<input name="MAIN_INFO_SOCIETE_TOWN" class="minwidth200" id="MAIN_INFO_SO
|
|||||||
|
|
||||||
// Country
|
// Country
|
||||||
print '<tr class="oddeven"><td class="fieldrequired"><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td class="maxwidthonsmartphone">';
|
print '<tr class="oddeven"><td class="fieldrequired"><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td class="maxwidthonsmartphone">';
|
||||||
print img_picto('', 'globe-americas', 'class="paddingrightonly"');
|
print img_picto('', 'globe-americas', 'class="pictofixedwidth"');
|
||||||
print $form->select_country($mysoc->country_id, 'country_id', '', 0);
|
print $form->select_country($mysoc->country_id, 'country_id', '', 0);
|
||||||
if ($user->admin) {
|
if ($user->admin) {
|
||||||
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||||
@ -430,35 +430,37 @@ if (!empty($conf->global->MAIN_INFO_SOCIETE_STATE)) {
|
|||||||
$tmp = explode(':', $conf->global->MAIN_INFO_SOCIETE_STATE);
|
$tmp = explode(':', $conf->global->MAIN_INFO_SOCIETE_STATE);
|
||||||
$state_id = $tmp[0];
|
$state_id = $tmp[0];
|
||||||
}
|
}
|
||||||
$formcompany->select_departement($state_id, $mysoc->country_code, 'state_id');
|
print img_picto('', 'state', 'class="pictofixedwidth"');
|
||||||
|
print $formcompany->select_state($state_id, $mysoc->country_code, 'state_id');
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
// Currency
|
// Currency
|
||||||
print '<tr class="oddeven"><td><label for="currency">'.$langs->trans("CompanyCurrency").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="currency">'.$langs->trans("CompanyCurrency").'</label></td><td>';
|
||||||
|
print img_picto('', 'multicurrency', 'class="pictofixedwidth"');
|
||||||
print $form->selectCurrency($conf->currency, "currency");
|
print $form->selectCurrency($conf->currency, "currency");
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
// Phone
|
// Phone
|
||||||
print '<tr class="oddeven"><td><label for="phone">'.$langs->trans("Phone").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="phone">'.$langs->trans("Phone").'</label></td><td>';
|
||||||
print img_picto('', 'object_phoning', '', false, 0, 0, '', 'paddingright');
|
print img_picto('', 'object_phoning', '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
print '<input class="maxwidth150 widthcentpercentminusx" name="tel" id="phone" value="'.dol_escape_htmltag((GETPOSTISSET('tel') ? GETPOST('tel', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_TEL) ? $conf->global->MAIN_INFO_SOCIETE_TEL : ''))).'"></td></tr>';
|
print '<input class="maxwidth150 widthcentpercentminusx" name="tel" id="phone" value="'.dol_escape_htmltag((GETPOSTISSET('tel') ? GETPOST('tel', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_TEL) ? $conf->global->MAIN_INFO_SOCIETE_TEL : ''))).'"></td></tr>';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
// Fax
|
// Fax
|
||||||
print '<tr class="oddeven"><td><label for="fax">'.$langs->trans("Fax").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="fax">'.$langs->trans("Fax").'</label></td><td>';
|
||||||
print img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'paddingright');
|
print img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
print '<input class="maxwidth150" name="fax" id="fax" value="'.dol_escape_htmltag((GETPOSTISSET('fax') ? GETPOST('fax', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_FAX) ? $conf->global->MAIN_INFO_SOCIETE_FAX : ''))).'"></td></tr>';
|
print '<input class="maxwidth150" name="fax" id="fax" value="'.dol_escape_htmltag((GETPOSTISSET('fax') ? GETPOST('fax', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_FAX) ? $conf->global->MAIN_INFO_SOCIETE_FAX : ''))).'"></td></tr>';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
// Email
|
// Email
|
||||||
print '<tr class="oddeven"><td><label for="email">'.$langs->trans("EMail").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="email">'.$langs->trans("EMail").'</label></td><td>';
|
||||||
print img_picto('', 'object_email', '', false, 0, 0, '', 'paddingright');
|
print img_picto('', 'object_email', '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
print '<input class="maxwidth150" name="mail" id="email" value="'.dol_escape_htmltag((GETPOSTISSET('mail') ? GETPOST('mail', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_MAIL) ? $conf->global->MAIN_INFO_SOCIETE_MAIL : ''))).'"></td></tr>';
|
print '<input class="maxwidth150" name="mail" id="email" value="'.dol_escape_htmltag((GETPOSTISSET('mail') ? GETPOST('mail', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_MAIL) ? $conf->global->MAIN_INFO_SOCIETE_MAIL : ''))).'"></td></tr>';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
// Web
|
// Web
|
||||||
print '<tr class="oddeven"><td><label for="web">'.$langs->trans("Web").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="web">'.$langs->trans("Web").'</label></td><td>';
|
||||||
print img_picto('', 'globe', '', false, 0, 0, '', 'paddingright');
|
print img_picto('', 'globe', '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
print '<input class="maxwidth300 widthcentpercentminusx" name="web" id="web" value="'.dol_escape_htmltag((GETPOSTISSET('web') ? GETPOST('web', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_WEB) ? $conf->global->MAIN_INFO_SOCIETE_WEB : ''))).'"></td></tr>';
|
print '<input class="maxwidth300 widthcentpercentminusx" name="web" id="web" value="'.dol_escape_htmltag((GETPOSTISSET('web') ? GETPOST('web', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_WEB) ? $conf->global->MAIN_INFO_SOCIETE_WEB : ''))).'"></td></tr>';
|
||||||
print '</td></tr>'."\n";
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
@ -466,7 +468,7 @@ print '</td></tr>'."\n";
|
|||||||
if (!empty($conf->barcode->enabled)) {
|
if (!empty($conf->barcode->enabled)) {
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print '<label for="barcode">'.$langs->trans("Gencod").'</label></td><td>';
|
print '<label for="barcode">'.$langs->trans("Gencod").'</label></td><td>';
|
||||||
print '<span class="fa paddingright fa-barcode"></span>';
|
print '<span class="fa fa-barcode pictofixedwidth"></span>';
|
||||||
print '<input name="barcode" id="barcode" class="minwidth150 widthcentpercentminusx maxwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('barcode') ? GETPOST('barcode', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_GENCODE) ? $conf->global->MAIN_INFO_SOCIETE_GENCODE : ''))).'"></td></tr>';
|
print '<input name="barcode" id="barcode" class="minwidth150 widthcentpercentminusx maxwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('barcode') ? GETPOST('barcode', 'alphanohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_GENCODE) ? $conf->global->MAIN_INFO_SOCIETE_GENCODE : ''))).'"></td></tr>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -371,16 +371,6 @@ print $formadmin->select_language($selected, 'PDF_USE_ALSO_LANGUAGE_CODE', 0, nu
|
|||||||
//}
|
//}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
//Desc
|
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("HideDescOnPDF").'</td><td>';
|
|
||||||
if ($conf->use_javascript_ajax) {
|
|
||||||
print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_DESC');
|
|
||||||
} else {
|
|
||||||
print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_HIDE_DESC', (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC)) ? $conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC : 0, 1);
|
|
||||||
}
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
// Ref
|
// Ref
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("HideRefOnPDF").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("HideRefOnPDF").'</td><td>';
|
||||||
@ -391,6 +381,16 @@ if ($conf->use_javascript_ajax) {
|
|||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
// Desc
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$langs->trans("HideDescOnPDF").'</td><td>';
|
||||||
|
if ($conf->use_javascript_ajax) {
|
||||||
|
print ajax_constantonoff('MAIN_GENERATE_DOCUMENTS_HIDE_DESC');
|
||||||
|
} else {
|
||||||
|
print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_HIDE_DESC', (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC)) ? $conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC : 0, 1);
|
||||||
|
}
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
// Details
|
// Details
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("HideDetailsOnPDF").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("HideDetailsOnPDF").'</td><td>';
|
||||||
|
|||||||
@ -116,10 +116,11 @@ print '</td></tr>';
|
|||||||
print '</table>';
|
print '</table>';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
|
/*
|
||||||
print '<br><div class="center">';
|
print '<br><div class="center">';
|
||||||
print '<input class="button button-save" type="submit" name="save" value="'.$langs->trans("Save").'">';
|
print '<input class="button button-save" type="submit" name="save" value="'.$langs->trans("Save").'">';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
*/
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
|
|||||||
@ -251,7 +251,7 @@ foreach ($arrayhandler as $key => $module) {
|
|||||||
} elseif ($tmp == 'NotConfigured') {
|
} elseif ($tmp == 'NotConfigured') {
|
||||||
print $langs->trans($tmp);
|
print $langs->trans($tmp);
|
||||||
} else {
|
} else {
|
||||||
print $tmp;
|
print '<span class="opacitymedium">'.$tmp.'</span>';
|
||||||
}
|
}
|
||||||
print '</td>'."\n";
|
print '</td>'."\n";
|
||||||
|
|
||||||
|
|||||||
@ -532,10 +532,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (!empty($object->table_element_line)) {
|
if (!empty($object->table_element_line)) {
|
||||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '#addline' : '').'" method="POST">
|
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '' : '').'" method="POST">
|
||||||
<input type="hidden" name="token" value="' . newToken().'">
|
<input type="hidden" name="token" value="' . newToken().'">
|
||||||
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
||||||
<input type="hidden" name="mode" value="">
|
<input type="hidden" name="mode" value="">
|
||||||
|
<input type="hidden" name="page_y" value="">
|
||||||
<input type="hidden" name="id" value="' . $object->id.'">
|
<input type="hidden" name="id" value="' . $object->id.'">
|
||||||
';
|
';
|
||||||
|
|
||||||
|
|||||||
@ -83,6 +83,10 @@ foreach ($object->fields as $key => $val) {
|
|||||||
if (GETPOST('search_'.$key, 'alpha') !== '') {
|
if (GETPOST('search_'.$key, 'alpha') !== '') {
|
||||||
$search[$key] = GETPOST('search_'.$key, 'alpha');
|
$search[$key] = GETPOST('search_'.$key, 'alpha');
|
||||||
}
|
}
|
||||||
|
if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) {
|
||||||
|
$search[$key.'_dtstart'] = dol_mktime(0, 0, 0, GETPOST('search_'.$key.'_dtstartmonth', 'int'), GETPOST('search_'.$key.'_dtstartday', 'int'), GETPOST('search_'.$key.'_dtstartyear', 'int'));
|
||||||
|
$search[$key.'_dtend'] = dol_mktime(23, 59, 59, GETPOST('search_'.$key.'_dtendmonth', 'int'), GETPOST('search_'.$key.'_dtendday', 'int'), GETPOST('search_'.$key.'_dtendyear', 'int'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// List of fields to search into when doing a "search in all"
|
// List of fields to search into when doing a "search in all"
|
||||||
@ -131,7 +135,8 @@ $result = restrictedArea($user, 'bom');
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (GETPOST('cancel', 'alpha')) {
|
if (GETPOST('cancel', 'alpha')) {
|
||||||
$action = 'list'; $massaction = '';
|
$action = 'list';
|
||||||
|
$massaction = '';
|
||||||
}
|
}
|
||||||
if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') {
|
if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') {
|
||||||
$massaction = '';
|
$massaction = '';
|
||||||
@ -151,6 +156,10 @@ if (empty($reshook)) {
|
|||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
||||||
foreach ($object->fields as $key => $val) {
|
foreach ($object->fields as $key => $val) {
|
||||||
$search[$key] = '';
|
$search[$key] = '';
|
||||||
|
if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) {
|
||||||
|
$search[$key.'_dtstart'] = '';
|
||||||
|
$search[$key.'_dtend'] = '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$toselect = array();
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
@ -277,18 +286,18 @@ $now = dol_now();
|
|||||||
|
|
||||||
$help_url = 'EN:Module_BOM';
|
$help_url = 'EN:Module_BOM';
|
||||||
$title = $langs->trans('ListOfBOMs');
|
$title = $langs->trans('ListOfBOMs');
|
||||||
|
$morejs = array();
|
||||||
|
$morecss = array();
|
||||||
|
|
||||||
|
|
||||||
// Build and execute select
|
// Build and execute select
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
$sql = 'SELECT ';
|
$sql = 'SELECT ';
|
||||||
foreach ($object->fields as $key => $val) {
|
$sql .= $object->getFieldList('t');
|
||||||
$sql .= 't.'.$key.', ';
|
|
||||||
}
|
|
||||||
// Add fields from extrafields
|
// Add fields from extrafields
|
||||||
if (!empty($extrafields->attributes[$object->table_element]['label'])) {
|
if (!empty($extrafields->attributes[$object->table_element]['label'])) {
|
||||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||||
$sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.' as options_'.$key.', ' : '');
|
$sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key.' as options_'.$key.', ' : '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add fields from hooks
|
// Add fields from hooks
|
||||||
@ -297,21 +306,26 @@ $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters, $obje
|
|||||||
$sql .= preg_replace('/^,/', '', $hookmanager->resPrint);
|
$sql .= preg_replace('/^,/', '', $hookmanager->resPrint);
|
||||||
$sql = preg_replace('/,\s*$/', '', $sql);
|
$sql = preg_replace('/,\s*$/', '', $sql);
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t";
|
||||||
if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
|
if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (t.rowid = ef.fk_object)";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (t.rowid = ef.fk_object)";
|
||||||
}
|
}
|
||||||
|
// Add table from hooks
|
||||||
|
$parameters = array();
|
||||||
|
$reshook = $hookmanager->executeHooks('printFieldListFrom', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
|
$sql .= $hookmanager->resPrint;
|
||||||
if ($object->ismultientitymanaged == 1) {
|
if ($object->ismultientitymanaged == 1) {
|
||||||
$sql .= " WHERE t.entity IN (".getEntity($object->element).")";
|
$sql .= " WHERE t.entity IN (".getEntity($object->element).")";
|
||||||
} else {
|
} else {
|
||||||
$sql .= " WHERE 1 = 1";
|
$sql .= " WHERE 1 = 1";
|
||||||
}
|
}
|
||||||
foreach ($search as $key => $val) {
|
foreach ($search as $key => $val) {
|
||||||
|
if (array_key_exists($key, $object->fields)) {
|
||||||
if ($key == 'status' && $search[$key] == -1) {
|
if ($key == 'status' && $search[$key] == -1) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$mode_search = (($object->isInt($object->fields[$key]) || $object->isFloat($object->fields[$key])) ? 1 : 0);
|
$mode_search = (($object->isInt($object->fields[$key]) || $object->isFloat($object->fields[$key])) ? 1 : 0);
|
||||||
if (strpos($object->fields[$key]['type'], 'integer:') === 0) {
|
if ((strpos($object->fields[$key]['type'], 'integer:') === 0) || (strpos($object->fields[$key]['type'], 'sellist:') === 0) || !empty($object->fields[$key]['arrayofkeyval'])) {
|
||||||
if ($search[$key] == '-1') {
|
if ($search[$key] == '-1' || $search[$key] === '0') {
|
||||||
$search[$key] = '';
|
$search[$key] = '';
|
||||||
}
|
}
|
||||||
$mode_search = 2;
|
$mode_search = 2;
|
||||||
@ -319,11 +333,25 @@ foreach ($search as $key => $val) {
|
|||||||
if ($search[$key] != '') {
|
if ($search[$key] != '') {
|
||||||
$sql .= natural_search($key, $search[$key], (($key == 'status') ? 2 : $mode_search));
|
$sql .= natural_search($key, $search[$key], (($key == 'status') ? 2 : $mode_search));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (preg_match('/(_dtstart|_dtend)$/', $key) && $search[$key] != '') {
|
||||||
|
$columnName=preg_replace('/(_dtstart|_dtend)$/', '', $key);
|
||||||
|
if (preg_match('/^(date|timestamp|datetime)/', $object->fields[$columnName]['type'])) {
|
||||||
|
if (preg_match('/_dtstart$/', $key)) {
|
||||||
|
$sql .= " AND t." . $columnName . " >= '" . $db->idate($search[$key]) . "'";
|
||||||
|
}
|
||||||
|
if (preg_match('/_dtend$/', $key)) {
|
||||||
|
$sql .= " AND t." . $columnName . " <= '" . $db->idate($search[$key]) . "'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($search_all) {
|
if ($search_all) {
|
||||||
$sql .= natural_search(array_keys($fieldstosearchall), $search_all);
|
$sql .= natural_search(array_keys($fieldstosearchall), $search_all);
|
||||||
}
|
}
|
||||||
|
//$sql.= dolSqlDateFilter("t.field", $search_xxxday, $search_xxxmonth, $search_xxxyear);
|
||||||
// Add where from extra fields
|
// Add where from extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php';
|
||||||
// Add where from hooks
|
// Add where from hooks
|
||||||
@ -332,7 +360,7 @@ $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $objec
|
|||||||
$sql .= $hookmanager->resPrint;
|
$sql .= $hookmanager->resPrint;
|
||||||
|
|
||||||
/* If a group by is required
|
/* If a group by is required
|
||||||
$sql.= " GROUP BY "
|
$sql.= " GROUP BY ";
|
||||||
foreach($object->fields as $key => $val)
|
foreach($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
$sql.='t.'.$key.', ';
|
$sql.='t.'.$key.', ';
|
||||||
@ -345,7 +373,7 @@ if (! empty($extrafields->attributes[$object->table_element]['label'])) {
|
|||||||
}
|
}
|
||||||
// Add where from hooks
|
// Add where from hooks
|
||||||
$parameters=array();
|
$parameters=array();
|
||||||
$reshook=$hookmanager->executeHooks('printFieldListGroupBy',$parameters); // Note that $action and $object may have been modified by hook
|
$reshook=$hookmanager->executeHooks('printFieldListGroupBy', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
$sql.=$hookmanager->resPrint;
|
$sql.=$hookmanager->resPrint;
|
||||||
$sql=preg_replace('/,\s*$/','', $sql);
|
$sql=preg_replace('/,\s*$/','', $sql);
|
||||||
*/
|
*/
|
||||||
@ -391,7 +419,7 @@ if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $
|
|||||||
// Output page
|
// Output page
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
llxHeader('', $title, $help_url);
|
llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', '');
|
||||||
|
|
||||||
$arrayofselected = is_array($toselect) ? $toselect : array();
|
$arrayofselected = is_array($toselect) ? $toselect : array();
|
||||||
|
|
||||||
@ -416,6 +444,10 @@ if ($optioncss != '') {
|
|||||||
}
|
}
|
||||||
// Add $param from extra fields
|
// Add $param from extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||||
|
// Add $param from hooks
|
||||||
|
$parameters = array();
|
||||||
|
$reshook = $hookmanager->executeHooks('printFieldListSearchParam', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
|
$param .= $hookmanager->resPrint;
|
||||||
|
|
||||||
// List of mass actions available
|
// List of mass actions available
|
||||||
$arrayofmassactions = array(
|
$arrayofmassactions = array(
|
||||||
@ -431,7 +463,7 @@ if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'pr
|
|||||||
}
|
}
|
||||||
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
|
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
|
||||||
|
|
||||||
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'."\n";
|
||||||
if ($optioncss != '') {
|
if ($optioncss != '') {
|
||||||
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
||||||
}
|
}
|
||||||
@ -440,11 +472,12 @@ print '<input type="hidden" name="formfilteraction" id="formfilteraction" value=
|
|||||||
print '<input type="hidden" name="action" value="list">';
|
print '<input type="hidden" name="action" value="list">';
|
||||||
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
||||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||||
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
||||||
|
|
||||||
$newcardbutton = dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bom/bom_card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $user->rights->bom->write);
|
$newcardbutton = dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bom/bom_card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $user->rights->bom->write);
|
||||||
|
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'bom', 0, $newcardbutton, '', $limit, 0, 0, 1);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'object_'.$object->picto, 0, $newcardbutton, '', $limit, 0, 0, 1);
|
||||||
|
|
||||||
// Add code for pre mass action (confirmation or email presend form)
|
// Add code for pre mass action (confirmation or email presend form)
|
||||||
$topicmail = "SendBillOfMaterialsRef";
|
$topicmail = "SendBillOfMaterialsRef";
|
||||||
@ -504,11 +537,18 @@ foreach ($object->fields as $key => $val) {
|
|||||||
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
||||||
print '<td class="liste_titre'.($cssforfield ? ' '.$cssforfield : '').'">';
|
print '<td class="liste_titre'.($cssforfield ? ' '.$cssforfield : '').'">';
|
||||||
if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) {
|
if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) {
|
||||||
print $form->selectarray('search_'.$key, $val['arrayofkeyval'], $search[$key], $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100', 1);
|
print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100', 1);
|
||||||
} elseif ((strpos($val['type'], 'integer:') === 0) || (strpos($val['type'], 'sellist:') === 0)) {
|
} elseif ((strpos($val['type'], 'integer:') === 0) || (strpos($val['type'], 'sellist:') === 0)) {
|
||||||
print $object->showInputField($val, $key, $search[$key], '', '', 'search_', 'maxwidth125', 1);
|
print $object->showInputField($val, $key, (isset($search[$key]) ? $search[$key] : ''), '', '', 'search_', 'maxwidth125', 1);
|
||||||
} elseif (!preg_match('/^(date|timestamp)/', $val['type'])) {
|
} elseif (!preg_match('/^(date|timestamp|datetime)/', $val['type'])) {
|
||||||
print '<input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.dol_escape_htmltag($search[$key]).'">';
|
print '<input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.dol_escape_htmltag(isset($search[$key]) ? $search[$key] : '').'">';
|
||||||
|
} elseif (preg_match('/^(date|timestamp|datetime)/', $val['type'])) {
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $form->selectDate($search[$key.'_dtstart'] ? $search[$key.'_dtstart'] : '', "search_".$key."_dtstart", 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From'));
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $form->selectDate($search[$key.'_dtend'] ? $search[$key.'_dtend'] : '', "search_".$key."_dtend", 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to'));
|
||||||
|
print '</div>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
@ -559,7 +599,7 @@ print '</tr>'."\n";
|
|||||||
|
|
||||||
// Detect if we need a fetch on each output line
|
// Detect if we need a fetch on each output line
|
||||||
$needToFetchEachLine = 0;
|
$needToFetchEachLine = 0;
|
||||||
if (is_array($extrafields->attributes[$object->table_element]['computed']) && count($extrafields->attributes[$object->table_element]['computed']) > 0) {
|
if (isset($extrafields->attributes[$object->table_element]['computed']) && is_array($extrafields->attributes[$object->table_element]['computed']) && count($extrafields->attributes[$object->table_element]['computed']) > 0) {
|
||||||
foreach ($extrafields->attributes[$object->table_element]['computed'] as $key => $val) {
|
foreach ($extrafields->attributes[$object->table_element]['computed'] as $key => $val) {
|
||||||
if (preg_match('/\$object/', $val)) {
|
if (preg_match('/\$object/', $val)) {
|
||||||
$needToFetchEachLine++; // There is at least one compute field that use $object
|
$needToFetchEachLine++; // There is at least one compute field that use $object
|
||||||
@ -572,6 +612,7 @@ if (is_array($extrafields->attributes[$object->table_element]['computed']) && co
|
|||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$totalarray = array();
|
$totalarray = array();
|
||||||
|
$totalarray['nbfield'] = 0;
|
||||||
while ($i < ($limit ? min($num, $limit) : $num)) {
|
while ($i < ($limit ? min($num, $limit) : $num)) {
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
if (empty($obj)) {
|
if (empty($obj)) {
|
||||||
@ -597,17 +638,16 @@ while ($i < ($limit ? min($num, $limit) : $num)) {
|
|||||||
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
|
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'status' && empty($val['arrayofkeyval'])) {
|
if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status')) && empty($val['arrayofkeyval'])) {
|
||||||
$cssforfield .= ($cssforfield ? ' ' : '').'right';
|
$cssforfield .= ($cssforfield ? ' ' : '').'right';
|
||||||
}
|
}
|
||||||
if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) {
|
|
||||||
$cssforfield = 'tdoverflowmax100';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
||||||
print '<td'.($cssforfield ? ' class="'.$cssforfield.'"' : '').'>';
|
print '<td'.($cssforfield ? ' class="'.$cssforfield.'"' : '').'>';
|
||||||
if ($key == 'status') {
|
if ($key == 'status') {
|
||||||
print $object->getLibStatut(5);
|
print $object->getLibStatut(5);
|
||||||
|
} elseif ($key == 'rowid') {
|
||||||
|
print $object->showOutputField($val, $key, $object->id, '');
|
||||||
} else {
|
} else {
|
||||||
print $object->showOutputField($val, $key, $object->$key, '');
|
print $object->showOutputField($val, $key, $object->$key, '');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -97,23 +97,23 @@ class BOM extends CommonObject
|
|||||||
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",),
|
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",),
|
||||||
'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>5),
|
'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>5),
|
||||||
'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'noteditable'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of BOM", 'showoncombobox'=>'1',),
|
'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'noteditable'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of BOM", 'showoncombobox'=>'1',),
|
||||||
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'2', 'autofocusoncreate'=>1),
|
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'2', 'autofocusoncreate'=>1, 'css'=>'maxwidth300', 'csslist'=>'tdoverflowmax200'),
|
||||||
'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>33, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth150', 'csslist'=>'minwidth150 center'),
|
'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>33, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth150', 'csslist'=>'minwidth150 center'),
|
||||||
//'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>-1, 'position'=>32, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing')),
|
//'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>-1, 'position'=>32, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing')),
|
||||||
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:(finished IS NULL or finished <> 0)', 'label'=>'Product', 'picto'=>'product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp', 'css'=>'maxwidth500'),
|
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:(finished IS NULL or finished <> 0)', 'label'=>'Product', 'picto'=>'product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax100'),
|
||||||
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,),
|
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,),
|
||||||
'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth75imp'),
|
'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth75imp'),
|
||||||
//'efficiency' => array('type'=>'real', 'label'=>'ManufacturingEfficiency', 'enabled'=>1, 'visible'=>-1, 'default'=>1, 'position'=>100, 'notnull'=>0, 'css'=>'maxwidth50imp', 'help'=>'ValueOfMeansLossForProductProduced'),
|
//'efficiency' => array('type'=>'real', 'label'=>'ManufacturingEfficiency', 'enabled'=>1, 'visible'=>-1, 'default'=>1, 'position'=>100, 'notnull'=>0, 'css'=>'maxwidth50imp', 'help'=>'ValueOfMeansLossForProductProduced'),
|
||||||
'duration' => array('type'=>'duration', 'label'=>'EstimatedDuration', 'enabled'=>1, 'visible'=>-1, 'position'=>101, 'notnull'=>-1, 'css'=>'maxwidth50imp', 'help'=>'EstimatedDurationDesc'),
|
'duration' => array('type'=>'duration', 'label'=>'EstimatedDuration', 'enabled'=>1, 'visible'=>-1, 'position'=>101, 'notnull'=>-1, 'css'=>'maxwidth50imp', 'help'=>'EstimatedDurationDesc'),
|
||||||
'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:0', 'label'=>'WarehouseForProduction', 'picto'=>'stock', 'enabled'=>1, 'visible'=>-1, 'position'=>102, 'css'=>'maxwidth500'),
|
'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:0', 'label'=>'WarehouseForProduction', 'picto'=>'stock', 'enabled'=>1, 'visible'=>-1, 'position'=>102, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax100'),
|
||||||
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>-2, 'position'=>161, 'notnull'=>-1,),
|
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>-2, 'position'=>161, 'notnull'=>-1,),
|
||||||
'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>-2, 'position'=>162, 'notnull'=>-1,),
|
'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>-2, 'position'=>162, 'notnull'=>-1,),
|
||||||
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>300, 'notnull'=>1,),
|
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>300, 'notnull'=>1,),
|
||||||
'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'position'=>501, 'notnull'=>1,),
|
'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'position'=>501, 'notnull'=>1,),
|
||||||
'date_valid' => array('type'=>'datetime', 'label'=>'DateValidation', 'enabled'=>1, 'visible'=>-2, 'position'=>502, 'notnull'=>0,),
|
'date_valid' => array('type'=>'datetime', 'label'=>'DateValidation', 'enabled'=>1, 'visible'=>-2, 'position'=>502, 'notnull'=>0,),
|
||||||
'fk_user_creat' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserCreation', 'picto'=>'user', 'enabled'=>1, 'visible'=>-2, 'position'=>510, 'notnull'=>1, 'foreignkey'=>'user.rowid',),
|
'fk_user_creat' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserCreation', 'picto'=>'user', 'enabled'=>1, 'visible'=>-2, 'position'=>510, 'notnull'=>1, 'foreignkey'=>'user.rowid', 'csslist'=>'tdoverflowmax100'),
|
||||||
'fk_user_modif' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'picto'=>'user', 'enabled'=>1, 'visible'=>-2, 'position'=>511, 'notnull'=>-1,),
|
'fk_user_modif' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'picto'=>'user', 'enabled'=>1, 'visible'=>-2, 'position'=>511, 'notnull'=>-1, 'csslist'=>'tdoverflowmax100'),
|
||||||
'fk_user_valid' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserValidation', 'picto'=>'user', 'enabled'=>1, 'visible'=>-2, 'position'=>512, 'notnull'=>0,),
|
'fk_user_valid' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserValidation', 'picto'=>'user', 'enabled'=>1, 'visible'=>-2, 'position'=>512, 'notnull'=>0, 'csslist'=>'tdoverflowmax100'),
|
||||||
'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>1000, 'notnull'=>-1,),
|
'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>1000, 'notnull'=>-1,),
|
||||||
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>1010),
|
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>1010),
|
||||||
'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>2, 'position'=>1000, 'notnull'=>1, 'default'=>0, 'index'=>1, 'arrayofkeyval'=>array(0=>'Draft', 1=>'Enabled', 9=>'Disabled')),
|
'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>2, 'position'=>1000, 'notnull'=>1, 'default'=>0, 'index'=>1, 'arrayofkeyval'=>array(0=>'Draft', 1=>'Enabled', 9=>'Disabled')),
|
||||||
@ -786,6 +786,9 @@ class BOM extends CommonObject
|
|||||||
}
|
}
|
||||||
$label .= '<br>';
|
$label .= '<br>';
|
||||||
$label .= '<b>'.$langs->trans('Ref').':</b> '.$this->ref;
|
$label .= '<b>'.$langs->trans('Ref').':</b> '.$this->ref;
|
||||||
|
if (isset($this->label)) {
|
||||||
|
$label .= '<br><b>'.$langs->trans('Label').':</b> '.$this->label;
|
||||||
|
}
|
||||||
|
|
||||||
$url = DOL_URL_ROOT.'/bom/bom_card.php?id='.$this->id;
|
$url = DOL_URL_ROOT.'/bom/bom_card.php?id='.$this->id;
|
||||||
|
|
||||||
|
|||||||
@ -843,16 +843,16 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && GETPOST('type') < 0) {
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && GETPOST('type') < 0) {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && $price_ht === '' && $price_ht_devise === '') { // Unit price can be 0 but not ''. Also price can be negative for proposal.
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && $price_ht === '' && $price_ht_devise === '') { // Unit price can be 0 but not ''. Also price can be negative for proposal.
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && empty($product_desc)) {
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && empty($product_desc)) {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Description")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Description")), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -871,7 +871,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error && ($qty >= 0) && (!empty($product_desc) || !empty($idprod))) {
|
if (!$error && ($qty >= 0) && (!empty($product_desc) || (!empty($idprod) && $idprod > 0))) {
|
||||||
$pu_ht = 0;
|
$pu_ht = 0;
|
||||||
$pu_ttc = 0;
|
$pu_ttc = 0;
|
||||||
$price_min = 0;
|
$price_min = 0;
|
||||||
@ -885,7 +885,7 @@ if (empty($reshook)) {
|
|||||||
// Ecrase $desc par celui du produit
|
// Ecrase $desc par celui du produit
|
||||||
// Ecrase $tva_tx par celui du produit
|
// Ecrase $tva_tx par celui du produit
|
||||||
// Replaces $fk_unit with the product unit
|
// Replaces $fk_unit with the product unit
|
||||||
if (!empty($idprod)) {
|
if (!empty($idprod) && $idprod > 0) {
|
||||||
$prod = new Product($db);
|
$prod = new Product($db);
|
||||||
$prod->fetch($idprod);
|
$prod->fetch($idprod);
|
||||||
|
|
||||||
@ -2450,10 +2450,11 @@ if ($action == 'create') {
|
|||||||
// Show object lines
|
// Show object lines
|
||||||
$result = $object->getLinesArray();
|
$result = $object->getLinesArray();
|
||||||
|
|
||||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '#addline' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
||||||
<input type="hidden" name="token" value="' . newToken().'">
|
<input type="hidden" name="token" value="' . newToken().'">
|
||||||
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
||||||
<input type="hidden" name="mode" value="">
|
<input type="hidden" name="mode" value="">
|
||||||
|
<input type="hidden" name="page_y" value="">
|
||||||
<input type="hidden" name="id" value="' . $object->id.'">
|
<input type="hidden" name="id" value="' . $object->id.'">
|
||||||
';
|
';
|
||||||
|
|
||||||
|
|||||||
@ -605,7 +605,7 @@ class Propal extends CommonObject
|
|||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$product_type = $type;
|
$product_type = $type;
|
||||||
if (!empty($fk_product)) {
|
if (!empty($fk_product) && $fk_product > 0) {
|
||||||
$product = new Product($this->db);
|
$product = new Product($this->db);
|
||||||
$result = $product->fetch($fk_product);
|
$result = $product->fetch($fk_product);
|
||||||
$product_type = $product->type;
|
$product_type = $product->type;
|
||||||
|
|||||||
@ -645,15 +645,15 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($idprod) && ($price_ht < 0) && ($qty < 0)) {
|
if ((empty($idprod) || $idprod < 0) && ($price_ht < 0) && ($qty < 0)) {
|
||||||
setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && GETPOST('type') < 0) {
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && GETPOST('type') < 0) {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && $price_ht == '' && $price_ht_devise == '') { // Unit price can be 0 but not ''. Also price can be negative for order.
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && $price_ht == '' && $price_ht_devise == '') { // Unit price can be 0 but not ''. Also price can be negative for order.
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -661,7 +661,7 @@ if (empty($reshook)) {
|
|||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && empty($product_desc)) {
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && empty($product_desc)) {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -680,7 +680,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error && ($qty >= 0) && (!empty($product_desc) || !empty($idprod))) {
|
if (!$error && ($qty >= 0) && (!empty($product_desc) || (!empty($idprod) && $idprod > 0))) {
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
$date_start = dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start'.$predef.'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
$date_start = dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start'.$predef.'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
||||||
$date_end = dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end'.$predef.'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
$date_end = dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end'.$predef.'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
||||||
@ -690,7 +690,7 @@ if (empty($reshook)) {
|
|||||||
// Ecrase $desc par celui du produit
|
// Ecrase $desc par celui du produit
|
||||||
// Ecrase $tva_tx par celui du produit
|
// Ecrase $tva_tx par celui du produit
|
||||||
// Ecrase $base_price_type par celui du produit
|
// Ecrase $base_price_type par celui du produit
|
||||||
if (!empty($idprod)) {
|
if (!empty($idprod) && $idprod > 0) {
|
||||||
$prod = new Product($db);
|
$prod = new Product($db);
|
||||||
$prod->fetch($idprod);
|
$prod->fetch($idprod);
|
||||||
|
|
||||||
@ -2417,10 +2417,11 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
*/
|
*/
|
||||||
$result = $object->getLinesArray();
|
$result = $object->getLinesArray();
|
||||||
|
|
||||||
print '<form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '#addline' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
print '<form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
||||||
<input type="hidden" name="token" value="' . newToken().'">
|
<input type="hidden" name="token" value="' . newToken().'">
|
||||||
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
||||||
<input type="hidden" name="mode" value="">
|
<input type="hidden" name="mode" value="">
|
||||||
|
<input type="hidden" name="page_y" value="">
|
||||||
<input type="hidden" name="id" value="' . $object->id.'">';
|
<input type="hidden" name="id" value="' . $object->id.'">';
|
||||||
|
|
||||||
if (!empty($conf->use_javascript_ajax) && $object->statut == Commande::STATUS_DRAFT) {
|
if (!empty($conf->use_javascript_ajax) && $object->statut == Commande::STATUS_DRAFT) {
|
||||||
|
|||||||
@ -1518,7 +1518,7 @@ class Commande extends CommonOrder
|
|||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$product_type = $type;
|
$product_type = $type;
|
||||||
if (!empty($fk_product)) {
|
if (!empty($fk_product) && $fk_product > 0) {
|
||||||
$product = new Product($this->db);
|
$product = new Product($this->db);
|
||||||
$result = $product->fetch($fk_product);
|
$result = $product->fetch($fk_product);
|
||||||
$product_type = $product->type;
|
$product_type = $product->type;
|
||||||
@ -4389,7 +4389,7 @@ class OrderLine extends CommonOrderLine
|
|||||||
$sql .= " '".price2num($this->localtax2_tx)."',";
|
$sql .= " '".price2num($this->localtax2_tx)."',";
|
||||||
$sql .= " '".$this->db->escape($this->localtax1_type)."',";
|
$sql .= " '".$this->db->escape($this->localtax1_type)."',";
|
||||||
$sql .= " '".$this->db->escape($this->localtax2_type)."',";
|
$sql .= " '".$this->db->escape($this->localtax2_type)."',";
|
||||||
$sql .= ' '.(!empty($this->fk_product) ? $this->fk_product : "null").',';
|
$sql .= ' '.((!empty($this->fk_product) && $this->fk_product > 0) ? $this->fk_product : "null").',';
|
||||||
$sql .= " '".$this->db->escape($this->product_type)."',";
|
$sql .= " '".$this->db->escape($this->product_type)."',";
|
||||||
$sql .= " '".price2num($this->remise_percent)."',";
|
$sql .= " '".price2num($this->remise_percent)."',";
|
||||||
$sql .= " ".(price2num($this->subprice) !== '' ?price2num($this->subprice) : "null").",";
|
$sql .= " ".(price2num($this->subprice) !== '' ?price2num($this->subprice) : "null").",";
|
||||||
|
|||||||
@ -399,7 +399,8 @@ if ($action == 'create') {
|
|||||||
// State
|
// State
|
||||||
print '<tr><td>'.$langs->trans('State').'</td><td>';
|
print '<tr><td>'.$langs->trans('State').'</td><td>';
|
||||||
if ($selectedcode) {
|
if ($selectedcode) {
|
||||||
$formcompany->select_departement(GETPOSTISSET("account_state_id") ? GETPOST("account_state_id") : '', $selectedcode, 'account_state_id');
|
print img_picto('', 'state', 'class="pictofixedwidth"');
|
||||||
|
print $formcompany->select_state(GETPOSTISSET("account_state_id") ? GETPOST("account_state_id") : '', $selectedcode, 'account_state_id');
|
||||||
} else {
|
} else {
|
||||||
print $countrynotdefined;
|
print $countrynotdefined;
|
||||||
}
|
}
|
||||||
@ -407,7 +408,10 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
// Web
|
// Web
|
||||||
print '<tr><td>'.$langs->trans("Web").'</td>';
|
print '<tr><td>'.$langs->trans("Web").'</td>';
|
||||||
print '<td><input class="minwidth300" type="text" class="flat" name="url" value="'.GETPOST("url").'"></td></tr>';
|
print '<td>';
|
||||||
|
print img_picto('', 'globe', 'class="pictofixedwidth"');
|
||||||
|
print '<input class="minwidth300" type="text" class="flat" name="url" value="'.GETPOST("url").'">';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
// Tags-Categories
|
// Tags-Categories
|
||||||
if ($conf->categorie->enabled) {
|
if ($conf->categorie->enabled) {
|
||||||
@ -865,6 +869,7 @@ if ($action == 'create') {
|
|||||||
if (!$selectedcode) {
|
if (!$selectedcode) {
|
||||||
$selectedcode = $conf->currency;
|
$selectedcode = $conf->currency;
|
||||||
}
|
}
|
||||||
|
print img_picto('', 'multicurrency', 'class="pictofixedwidth"');
|
||||||
print $form->selectCurrency((GETPOSTISSET("account_currency_code") ? GETPOST("account_currency_code") : $selectedcode), 'account_currency_code');
|
print $form->selectCurrency((GETPOSTISSET("account_currency_code") ? GETPOST("account_currency_code") : $selectedcode), 'account_currency_code');
|
||||||
//print $langs->trans("Currency".$conf->currency);
|
//print $langs->trans("Currency".$conf->currency);
|
||||||
//print '<input type="hidden" name="account_currency_code" value="'.$conf->currency.'">';
|
//print '<input type="hidden" name="account_currency_code" value="'.$conf->currency.'">';
|
||||||
@ -897,6 +902,7 @@ if ($action == 'create') {
|
|||||||
// State
|
// State
|
||||||
print '<tr><td>'.$langs->trans('State').'</td><td class="maxwidth200onsmartphone">';
|
print '<tr><td>'.$langs->trans('State').'</td><td class="maxwidth200onsmartphone">';
|
||||||
if ($selectedcode) {
|
if ($selectedcode) {
|
||||||
|
print img_picto('', 'state', 'class="pictofixedwidth"');
|
||||||
print $formcompany->select_state(GETPOSTISSET("account_state_id") ? GETPOST("account_state_id") : $object->state_id, $selectedcode, 'account_state_id');
|
print $formcompany->select_state(GETPOSTISSET("account_state_id") ? GETPOST("account_state_id") : $object->state_id, $selectedcode, 'account_state_id');
|
||||||
} else {
|
} else {
|
||||||
print $countrynotdefined;
|
print $countrynotdefined;
|
||||||
@ -925,7 +931,9 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
// Web
|
// Web
|
||||||
print '<tr><td>'.$langs->trans("Web").'</td>';
|
print '<tr><td>'.$langs->trans("Web").'</td>';
|
||||||
print '<td><input class="maxwidth200onsmartphone" type="text" class="flat" name="url" value="'.(GETPOSTISSET("url") ? GETPOST("url") : $object->url).'">';
|
print '<td>';
|
||||||
|
print img_picto('', 'globe', 'class="pictofixedwidth"');
|
||||||
|
print '<input class="maxwidth200onsmartphone" type="text" class="flat" name="url" value="'.(GETPOSTISSET("url") ? GETPOST("url") : $object->url).'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Tags-Categories
|
// Tags-Categories
|
||||||
|
|||||||
@ -564,7 +564,7 @@ foreach ($accounts as $key => $type) {
|
|||||||
|
|
||||||
// Account number
|
// Account number
|
||||||
if (!empty($arrayfields['b.account_number']['checked'])) {
|
if (!empty($arrayfields['b.account_number']['checked'])) {
|
||||||
print '<td class="tdoverflowmax300">';
|
print '<td class="tdoverflowmax250">';
|
||||||
if (!empty($conf->accounting->enabled) && !empty($objecttmp->account_number)) {
|
if (!empty($conf->accounting->enabled) && !empty($objecttmp->account_number)) {
|
||||||
$accountingaccount = new AccountingAccount($db);
|
$accountingaccount = new AccountingAccount($db);
|
||||||
$accountingaccount->fetch('', $objecttmp->account_number, 1);
|
$accountingaccount->fetch('', $objecttmp->account_number, 1);
|
||||||
|
|||||||
@ -447,15 +447,15 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($idprod) && ($price_ht < 0) && ($qty < 0)) {
|
if ((empty($idprod) || $idprod < 0) && ($price_ht < 0) && ($qty < 0)) {
|
||||||
setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && GETPOST('type') < 0) {
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && GETPOST('type') < 0) {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && (!($price_ht >= 0) || $price_ht == '')) { // Unit price can be 0 but not ''
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && (!($price_ht >= 0) || $price_ht == '')) { // Unit price can be 0 but not ''
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -463,7 +463,7 @@ if (empty($reshook)) {
|
|||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && empty($product_desc)) {
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && empty($product_desc)) {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -473,7 +473,7 @@ if (empty($reshook)) {
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error && ($qty >= 0) && (!empty($product_desc) || !empty($idprod))) {
|
if (!$error && ($qty >= 0) && (!empty($product_desc) || (!empty($idprod) && $idprod > 0))) {
|
||||||
$ret = $object->fetch($id);
|
$ret = $object->fetch($id);
|
||||||
if ($ret < 0) {
|
if ($ret < 0) {
|
||||||
dol_print_error($db, $object->error);
|
dol_print_error($db, $object->error);
|
||||||
@ -495,7 +495,7 @@ if (empty($reshook)) {
|
|||||||
// Ecrase $tva_tx par celui du produit
|
// Ecrase $tva_tx par celui du produit
|
||||||
// Ecrase $base_price_type par celui du produit
|
// Ecrase $base_price_type par celui du produit
|
||||||
// Replaces $fk_unit with the product's
|
// Replaces $fk_unit with the product's
|
||||||
if (!empty($idprod)) {
|
if (!empty($idprod) && $idprod > 0) {
|
||||||
$prod = new Product($db);
|
$prod = new Product($db);
|
||||||
$prod->fetch($idprod);
|
$prod->fetch($idprod);
|
||||||
|
|
||||||
|
|||||||
@ -2000,7 +2000,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($idprod) && ($price_ht < 0) && ($qty < 0)) {
|
if ((empty($idprod) || $idprod < 0) && ($price_ht < 0) && ($qty < 0)) {
|
||||||
setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -2010,11 +2010,11 @@ if (empty($reshook)) {
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && GETPOST('type') < 0) {
|
if ($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && GETPOST('type') < 0) {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if (($prod_entry_mode == 'free' && empty($idprod) && (($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) || $price_ht == '') && $price_ht_devise == '') && $object->type != Facture::TYPE_CREDIT_NOTE) { // Unit price can be 0 but not ''
|
if (($prod_entry_mode == 'free' && (empty($idprod) || $idprod < 0) && (($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) || $price_ht == '') && $price_ht_devise == '') && $object->type != Facture::TYPE_CREDIT_NOTE) { // Unit price can be 0 but not ''
|
||||||
if ($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) {
|
if ($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
if ($object->type == $object::TYPE_DEPOSIT) {
|
if ($object->type == $object::TYPE_DEPOSIT) {
|
||||||
@ -2057,7 +2057,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error && ($qty >= 0) && (!empty($product_desc) || !empty($idprod))) {
|
if (!$error && ($qty >= 0) && (!empty($product_desc) || (!empty($idprod) && $idprod > 0))) {
|
||||||
$ret = $object->fetch($id);
|
$ret = $object->fetch($id);
|
||||||
if ($ret < 0) {
|
if ($ret < 0) {
|
||||||
dol_print_error($db, $object->error);
|
dol_print_error($db, $object->error);
|
||||||
@ -2079,7 +2079,7 @@ if (empty($reshook)) {
|
|||||||
// Ecrase $tva_tx par celui du produit
|
// Ecrase $tva_tx par celui du produit
|
||||||
// Ecrase $base_price_type par celui du produit
|
// Ecrase $base_price_type par celui du produit
|
||||||
// Replaces $fk_unit with the product's
|
// Replaces $fk_unit with the product's
|
||||||
if (!empty($idprod)) {
|
if (!empty($idprod) && $idprod > 0) {
|
||||||
$prod = new Product($db);
|
$prod = new Product($db);
|
||||||
$prod->fetch($idprod);
|
$prod->fetch($idprod);
|
||||||
|
|
||||||
@ -5195,10 +5195,11 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '#addline' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
||||||
<input type="hidden" name="token" value="' . newToken().'">
|
<input type="hidden" name="token" value="' . newToken().'">
|
||||||
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
||||||
<input type="hidden" name="mode" value="">
|
<input type="hidden" name="mode" value="">
|
||||||
|
<input type="hidden" name="page_y" value="">
|
||||||
<input type="hidden" name="id" value="' . $object->id.'">
|
<input type="hidden" name="id" value="' . $object->id.'">
|
||||||
';
|
';
|
||||||
|
|
||||||
|
|||||||
@ -3213,7 +3213,7 @@ class Facture extends CommonInvoice
|
|||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$product_type = $type;
|
$product_type = $type;
|
||||||
if (!empty($fk_product)) {
|
if (!empty($fk_product) && $fk_product > 0) {
|
||||||
$product = new Product($this->db);
|
$product = new Product($this->db);
|
||||||
$result = $product->fetch($fk_product);
|
$result = $product->fetch($fk_product);
|
||||||
$product_type = $product->type;
|
$product_type = $product->type;
|
||||||
@ -5342,7 +5342,7 @@ class FactureLigne extends CommonInvoiceLine
|
|||||||
$this->error = 'ErrorProductTypeMustBe0orMore';
|
$this->error = 'ErrorProductTypeMustBe0orMore';
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (!empty($this->fk_product)) {
|
if (!empty($this->fk_product) && $this->fk_product > 0) {
|
||||||
// Check product exists
|
// Check product exists
|
||||||
$result = Product::isExistingObject('product', $this->fk_product);
|
$result = Product::isExistingObject('product', $this->fk_product);
|
||||||
if ($result <= 0) {
|
if ($result <= 0) {
|
||||||
@ -5377,7 +5377,7 @@ class FactureLigne extends CommonInvoiceLine
|
|||||||
$sql .= " ".price2num($this->localtax2_tx).",";
|
$sql .= " ".price2num($this->localtax2_tx).",";
|
||||||
$sql .= " '".$this->db->escape($this->localtax1_type)."',";
|
$sql .= " '".$this->db->escape($this->localtax1_type)."',";
|
||||||
$sql .= " '".$this->db->escape($this->localtax2_type)."',";
|
$sql .= " '".$this->db->escape($this->localtax2_type)."',";
|
||||||
$sql .= ' '.(!empty($this->fk_product) ? $this->fk_product : "null").',';
|
$sql .= ' '.((!empty($this->fk_product) && $this->fk_product > 0) ? $this->fk_product : "null").',';
|
||||||
$sql .= " ".((int) $this->product_type).",";
|
$sql .= " ".((int) $this->product_type).",";
|
||||||
$sql .= " ".price2num($this->remise_percent).",";
|
$sql .= " ".price2num($this->remise_percent).",";
|
||||||
$sql .= " ".price2num($this->subprice).",";
|
$sql .= " ".price2num($this->subprice).",";
|
||||||
|
|||||||
@ -726,6 +726,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($object->country_id) {
|
if ($object->country_id) {
|
||||||
|
print img_picto('', 'state', 'class="pictofixedwidth"');
|
||||||
print $formcompany->select_state(GETPOST("state_id", 'alpha') ? GETPOST("state_id", 'alpha') : $object->state_id, $object->country_code, 'state_id');
|
print $formcompany->select_state(GETPOST("state_id", 'alpha') ? GETPOST("state_id", 'alpha') : $object->state_id, $object->country_code, 'state_id');
|
||||||
} else {
|
} else {
|
||||||
print $countrynotdefined;
|
print $countrynotdefined;
|
||||||
@ -1019,6 +1020,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
print '<tr><td><label for="state_id">'.$langs->trans('State').'</label></td><td colspan="3" class="maxwidthonsmartphone">';
|
print '<tr><td><label for="state_id">'.$langs->trans('State').'</label></td><td colspan="3" class="maxwidthonsmartphone">';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print img_picto('', 'state', 'class="pictofixedwidth"');
|
||||||
print $formcompany->select_state(GETPOSTISSET('state_id') ? GETPOST('state_id', 'alpha') : $object->state_id, $object->country_code, 'state_id');
|
print $formcompany->select_state(GETPOSTISSET('state_id') ? GETPOST('state_id', 'alpha') : $object->state_id, $object->country_code, 'state_id');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -100,15 +100,15 @@ class Contact extends CommonObject
|
|||||||
'firstname' =>array('type'=>'varchar(50)', 'label'=>'Firstname', 'enabled'=>1, 'visible'=>1, 'position'=>50, 'showoncombobox'=>1, 'searchall'=>1),
|
'firstname' =>array('type'=>'varchar(50)', 'label'=>'Firstname', 'enabled'=>1, 'visible'=>1, 'position'=>50, 'showoncombobox'=>1, 'searchall'=>1),
|
||||||
'address' =>array('type'=>'varchar(255)', 'label'=>'Address', 'enabled'=>1, 'visible'=>-1, 'position'=>55),
|
'address' =>array('type'=>'varchar(255)', 'label'=>'Address', 'enabled'=>1, 'visible'=>-1, 'position'=>55),
|
||||||
'zip' =>array('type'=>'varchar(25)', 'label'=>'Zip', 'enabled'=>1, 'visible'=>1, 'position'=>60),
|
'zip' =>array('type'=>'varchar(25)', 'label'=>'Zip', 'enabled'=>1, 'visible'=>1, 'position'=>60),
|
||||||
'town' =>array('type'=>'text', 'label'=>'Town', 'enabled'=>1, 'visible'=>1, 'position'=>65),
|
'town' =>array('type'=>'text', 'label'=>'Town', 'enabled'=>1, 'visible'=>-1, 'position'=>65),
|
||||||
'fk_departement' =>array('type'=>'integer', 'label'=>'Fk departement', 'enabled'=>1, 'visible'=>3, 'position'=>70),
|
'fk_departement' =>array('type'=>'integer', 'label'=>'Fk departement', 'enabled'=>1, 'visible'=>3, 'position'=>70),
|
||||||
'fk_pays' =>array('type'=>'integer', 'label'=>'Fk pays', 'enabled'=>1, 'visible'=>3, 'position'=>75),
|
'fk_pays' =>array('type'=>'integer', 'label'=>'Fk pays', 'enabled'=>1, 'visible'=>3, 'position'=>75),
|
||||||
'birthday' =>array('type'=>'date', 'label'=>'Birthday', 'enabled'=>1, 'visible'=>3, 'position'=>80),
|
'birthday' =>array('type'=>'date', 'label'=>'Birthday', 'enabled'=>1, 'visible'=>3, 'position'=>80),
|
||||||
'poste' =>array('type'=>'varchar(80)', 'label'=>'PostOrFunction', 'enabled'=>1, 'visible'=>-1, 'position'=>85),
|
'poste' =>array('type'=>'varchar(80)', 'label'=>'PostOrFunction', 'enabled'=>1, 'visible'=>-1, 'position'=>85),
|
||||||
'phone' =>array('type'=>'varchar(30)', 'label'=>'Phone', 'enabled'=>1, 'visible'=>1, 'position'=>90, 'searchall'=>1),
|
'phone' =>array('type'=>'varchar(30)', 'label'=>'Phone', 'enabled'=>1, 'visible'=>1, 'position'=>90, 'searchall'=>1),
|
||||||
'phone_perso' =>array('type'=>'varchar(30)', 'label'=>'PhonePerso', 'enabled'=>1, 'visible'=>1, 'position'=>95, 'searchall'=>1),
|
'phone_perso' =>array('type'=>'varchar(30)', 'label'=>'PhonePerso', 'enabled'=>1, 'visible'=>-1, 'position'=>95, 'searchall'=>1),
|
||||||
'phone_mobile' =>array('type'=>'varchar(30)', 'label'=>'PhoneMobile', 'enabled'=>1, 'visible'=>1, 'position'=>100, 'searchall'=>1),
|
'phone_mobile' =>array('type'=>'varchar(30)', 'label'=>'PhoneMobile', 'enabled'=>1, 'visible'=>1, 'position'=>100, 'searchall'=>1),
|
||||||
'fax' =>array('type'=>'varchar(30)', 'label'=>'Fax', 'enabled'=>1, 'visible'=>1, 'position'=>105, 'searchall'=>1),
|
'fax' =>array('type'=>'varchar(30)', 'label'=>'Fax', 'enabled'=>1, 'visible'=>-1, 'position'=>105, 'searchall'=>1),
|
||||||
'email' =>array('type'=>'varchar(255)', 'label'=>'Email', 'enabled'=>1, 'visible'=>1, 'position'=>110, 'searchall'=>1),
|
'email' =>array('type'=>'varchar(255)', 'label'=>'Email', 'enabled'=>1, 'visible'=>1, 'position'=>110, 'searchall'=>1),
|
||||||
'socialnetworks' =>array('type'=>'text', 'label'=>'SocialNetworks', 'enabled'=>1, 'visible'=>3, 'position'=>115),
|
'socialnetworks' =>array('type'=>'text', 'label'=>'SocialNetworks', 'enabled'=>1, 'visible'=>3, 'position'=>115),
|
||||||
'photo' =>array('type'=>'varchar(255)', 'label'=>'Photo', 'enabled'=>1, 'visible'=>3, 'position'=>170),
|
'photo' =>array('type'=>'varchar(255)', 'label'=>'Photo', 'enabled'=>1, 'visible'=>3, 'position'=>170),
|
||||||
|
|||||||
@ -1097,28 +1097,28 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
// Phone
|
// Phone
|
||||||
if (!empty($arrayfields['p.phone']['checked'])) {
|
if (!empty($arrayfields['p.phone']['checked'])) {
|
||||||
print '<td class="nowraponall">'.dol_print_phone($obj->phone_pro, $obj->country_code, $obj->rowid, $obj->socid, 'AC_TEL', ' ', 'phone').'</td>';
|
print '<td class="nowraponall tdoverflowmax150">'.dol_print_phone($obj->phone_pro, $obj->country_code, $obj->rowid, $obj->socid, 'AC_TEL', ' ', 'phone').'</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Phone perso
|
// Phone perso
|
||||||
if (!empty($arrayfields['p.phone_perso']['checked'])) {
|
if (!empty($arrayfields['p.phone_perso']['checked'])) {
|
||||||
print '<td class="nowraponall">'.dol_print_phone($obj->phone_perso, $obj->country_code, $obj->rowid, $obj->socid, 'AC_TEL', ' ', 'phone').'</td>';
|
print '<td class="nowraponall tdoverflowmax150">'.dol_print_phone($obj->phone_perso, $obj->country_code, $obj->rowid, $obj->socid, 'AC_TEL', ' ', 'phone').'</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Phone mobile
|
// Phone mobile
|
||||||
if (!empty($arrayfields['p.phone_mobile']['checked'])) {
|
if (!empty($arrayfields['p.phone_mobile']['checked'])) {
|
||||||
print '<td class="nowraponall">'.dol_print_phone($obj->phone_mobile, $obj->country_code, $obj->rowid, $obj->socid, 'AC_TEL', ' ', 'mobile').'</td>';
|
print '<td class="nowraponall tdoverflowmax150">'.dol_print_phone($obj->phone_mobile, $obj->country_code, $obj->rowid, $obj->socid, 'AC_TEL', ' ', 'mobile').'</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fax
|
// Fax
|
||||||
if (!empty($arrayfields['p.fax']['checked'])) {
|
if (!empty($arrayfields['p.fax']['checked'])) {
|
||||||
print '<td class="nowraponall">'.dol_print_phone($obj->fax, $obj->country_code, $obj->rowid, $obj->socid, 'AC_TEL', ' ', 'fax').'</td>';
|
print '<td class="nowraponall tdoverflowmax150">'.dol_print_phone($obj->fax, $obj->country_code, $obj->rowid, $obj->socid, 'AC_TEL', ' ', 'fax').'</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -386,7 +386,7 @@ if (empty($reshook)) {
|
|||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Qty")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Qty")), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if (GETPOST('prod_entry_mode', 'alpha') == 'free' && empty($idprod) && empty($product_desc)) {
|
if (GETPOST('prod_entry_mode', 'alpha') == 'free' && (empty($idprod) || $idprod < 0) && empty($product_desc)) {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Description")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Description")), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7717,7 +7717,7 @@ abstract class CommonObject
|
|||||||
$buyPrice = $unitPrice * (1 - $discountPercent / 100);
|
$buyPrice = $unitPrice * (1 - $discountPercent / 100);
|
||||||
} else {
|
} else {
|
||||||
// Get cost price for margin calculation
|
// Get cost price for margin calculation
|
||||||
if (!empty($fk_product)) {
|
if (!empty($fk_product) && $fk_product > 0) {
|
||||||
if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == 'costprice') {
|
if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == 'costprice') {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
$product = new Product($this->db);
|
$product = new Product($this->db);
|
||||||
|
|||||||
@ -2176,7 +2176,7 @@ class Form
|
|||||||
*
|
*
|
||||||
* @param int $selected Preselected products
|
* @param int $selected Preselected products
|
||||||
* @param string $htmlname Name of HTML select field (must be unique in page).
|
* @param string $htmlname Name of HTML select field (must be unique in page).
|
||||||
* @param int $filtertype Filter on product type (''=nofilter, 0=product, 1=service)
|
* @param int|string $filtertype Filter on product type (''=nofilter, 0=product, 1=service)
|
||||||
* @param int $limit Limit on number of returned lines
|
* @param int $limit Limit on number of returned lines
|
||||||
* @param int $price_level Level of price to show
|
* @param int $price_level Level of price to show
|
||||||
* @param int $status Sell status -1=Return all products, 0=Products not on sell, 1=Products on sell
|
* @param int $status Sell status -1=Return all products, 0=Products not on sell, 1=Products on sell
|
||||||
@ -2604,7 +2604,7 @@ class Form
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($showempty) {
|
if ($showempty) {
|
||||||
$out .= '<option value="0" selected>'.($textifempty ? $textifempty : ' ').'</option>';
|
$out .= '<option value="-1" selected>'.($textifempty ? $textifempty : ' ').'</option>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|||||||
@ -444,6 +444,8 @@ class FormAdmin
|
|||||||
}
|
}
|
||||||
$out .= '</select>';
|
$out .= '</select>';
|
||||||
|
|
||||||
|
$out .= ajax_combobox($htmlname);
|
||||||
|
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3522,7 +3522,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', 'commercial', 'companies',
|
'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', 'commercial', 'companies',
|
||||||
'generic', 'home', 'hrm', 'members', 'products', 'invoicing',
|
'generic', 'home', 'hrm', 'members', 'products', 'invoicing',
|
||||||
'partnership', 'payment', 'pencil-ruler', 'preview', 'project', 'projectpub', 'projecttask', 'question', 'refresh', 'salary', 'shipment',
|
'partnership', 'payment', 'pencil-ruler', 'preview', 'project', 'projectpub', 'projecttask', 'question', 'refresh', 'salary', 'shipment',
|
||||||
'supplier_invoice', 'supplier_invoicea', 'supplier_invoicer', 'supplier_invoiced',
|
'state', 'supplier_invoice', 'supplier_invoicea', 'supplier_invoicer', 'supplier_invoiced',
|
||||||
'technic', 'ticket',
|
'technic', 'ticket',
|
||||||
'error', 'warning',
|
'error', 'warning',
|
||||||
'recent', 'reception', 'recruitmentcandidature', 'recruitmentjobposition', 'resource',
|
'recent', 'reception', 'recruitmentcandidature', 'recruitmentjobposition', 'resource',
|
||||||
@ -3572,7 +3572,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
'recent' => 'question', 'reception'=>'dolly', 'recruitmentjobposition'=>'id-card-alt', 'recruitmentcandidature'=>'id-badge',
|
'recent' => 'question', 'reception'=>'dolly', 'recruitmentjobposition'=>'id-card-alt', 'recruitmentcandidature'=>'id-badge',
|
||||||
'resize'=>'crop', 'supplier_order'=>'dol-order_supplier', 'supplier_proposal'=>'file-signature',
|
'resize'=>'crop', 'supplier_order'=>'dol-order_supplier', 'supplier_proposal'=>'file-signature',
|
||||||
'refresh'=>'redo', 'resource'=>'laptop-house',
|
'refresh'=>'redo', 'resource'=>'laptop-house',
|
||||||
'security'=>'key', 'salary'=>'wallet', 'shipment'=>'dolly', 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'stripe'=>'stripe-s',
|
'state'=>'map-marked', 'security'=>'key', 'salary'=>'wallet', 'shipment'=>'dolly', 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'stripe'=>'stripe-s',
|
||||||
'supplier'=>'building', 'supplier_invoice'=>'file-invoice-dollar', 'technic'=>'cogs', 'ticket'=>'ticket-alt',
|
'supplier'=>'building', 'supplier_invoice'=>'file-invoice-dollar', 'technic'=>'cogs', 'ticket'=>'ticket-alt',
|
||||||
'timespent'=>'clock', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach',
|
'timespent'=>'clock', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach',
|
||||||
'title_agenda'=>'calendar-alt',
|
'title_agenda'=>'calendar-alt',
|
||||||
@ -3610,13 +3610,13 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($pictowithouttext, array('dollyrevert', 'member', 'members', 'contract', 'group', 'resource', 'shipment'))) {
|
if (in_array($pictowithouttext, array('dollyrevert', 'member', 'members', 'contract', 'group', 'resource', 'shipment'))) {
|
||||||
$morecss = 'em092';
|
$morecss .= ' em092';
|
||||||
}
|
}
|
||||||
if (in_array($pictowithouttext, array('conferenceorbooth', 'collab', 'eventorganization', 'holiday', 'info', 'project', 'workstation'))) {
|
if (in_array($pictowithouttext, array('conferenceorbooth', 'collab', 'eventorganization', 'holiday', 'info', 'project', 'workstation'))) {
|
||||||
$morecss = 'em088';
|
$morecss .= ' em088';
|
||||||
}
|
}
|
||||||
if (in_array($pictowithouttext, array('asset', 'intervention', 'payment', 'loan', 'partnership', 'stock', 'technic'))) {
|
if (in_array($pictowithouttext, array('asset', 'intervention', 'payment', 'loan', 'partnership', 'stock', 'technic'))) {
|
||||||
$morecss = 'em080';
|
$morecss .= ' em080';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define $marginleftonlyshort
|
// Define $marginleftonlyshort
|
||||||
@ -3673,7 +3673,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
'partnership'=>'#6c6aa8', 'playdisabled'=>'#ccc', 'printer'=>'#444', 'projectpub'=>'#986c6a', 'reception'=>'#a69944', 'resize'=>'#444', 'rss'=>'#cba',
|
'partnership'=>'#6c6aa8', 'playdisabled'=>'#ccc', 'printer'=>'#444', 'projectpub'=>'#986c6a', 'reception'=>'#a69944', 'resize'=>'#444', 'rss'=>'#cba',
|
||||||
//'shipment'=>'#a69944',
|
//'shipment'=>'#a69944',
|
||||||
'security'=>'#999', 'stats'=>'#444', 'switch_off'=>'#999', 'technic'=>'#999', 'timespent'=>'#555',
|
'security'=>'#999', 'stats'=>'#444', 'switch_off'=>'#999', 'technic'=>'#999', 'timespent'=>'#555',
|
||||||
'uncheck'=>'#800', 'uparrow'=>'#555', 'user-cog'=>'#999', 'country'=>'#aaa', 'globe-americas'=>'#aaa',
|
'uncheck'=>'#800', 'uparrow'=>'#555', 'user-cog'=>'#999', 'country'=>'#aaa', 'globe-americas'=>'#aaa', 'state'=>'#aaa',
|
||||||
'website'=>'#304', 'workstation'=>'#a69944'
|
'website'=>'#304', 'workstation'=>'#a69944'
|
||||||
);
|
);
|
||||||
if (isset($arrayconvpictotocolor[$pictowithouttext])) {
|
if (isset($arrayconvpictotocolor[$pictowithouttext])) {
|
||||||
|
|||||||
@ -63,7 +63,7 @@ foreach ($object->fields as $key => $val) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="valuefieldcreate">';
|
print '<td class="valuefieldcreate">';
|
||||||
if (!empty($val['picto'])) {
|
if (!empty($val['picto'])) {
|
||||||
print img_picto('', $val['picto']);
|
print img_picto('', $val['picto'], '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
}
|
}
|
||||||
if (in_array($val['type'], array('int', 'integer'))) {
|
if (in_array($val['type'], array('int', 'integer'))) {
|
||||||
$value = GETPOST($key, 'int');
|
$value = GETPOST($key, 'int');
|
||||||
|
|||||||
@ -63,7 +63,7 @@ foreach ($object->fields as $key => $val) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="valuefieldcreate">';
|
print '<td class="valuefieldcreate">';
|
||||||
if (!empty($val['picto'])) {
|
if (!empty($val['picto'])) {
|
||||||
print img_picto('', $val['picto']);
|
print img_picto('', $val['picto'], '', false, 0, 0, '', 'pictofixedwidth');
|
||||||
}
|
}
|
||||||
if (in_array($val['type'], array('int', 'integer'))) {
|
if (in_array($val['type'], array('int', 'integer'))) {
|
||||||
$value = GETPOSTISSET($key) ?GETPOST($key, 'int') : $object->$key;
|
$value = GETPOSTISSET($key) ?GETPOST($key, 'int') : $object->$key;
|
||||||
|
|||||||
@ -448,7 +448,7 @@ if ($nolinesbefore) {
|
|||||||
$coldisplay += $colspan;
|
$coldisplay += $colspan;
|
||||||
?>
|
?>
|
||||||
<td class="nobottom linecoledit center valignmiddle" colspan="<?php echo $colspan; ?>">
|
<td class="nobottom linecoledit center valignmiddle" colspan="<?php echo $colspan; ?>">
|
||||||
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline" id="addline">
|
<input type="submit" class="button reposition" value="<?php echo $langs->trans('Add'); ?>" name="addline" id="addline">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) ---Put here your own copyright and developer email---
|
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -571,10 +570,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
// Show object lines
|
// Show object lines
|
||||||
$result = $object->getLinesArray();
|
$result = $object->getLinesArray();
|
||||||
|
|
||||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '#addline' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
||||||
<input type="hidden" name="token" value="' . newToken().'">
|
<input type="hidden" name="token" value="' . newToken().'">
|
||||||
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
||||||
<input type="hidden" name="mode" value="">
|
<input type="hidden" name="mode" value="">
|
||||||
|
<input type="hidden" name="page_y" value="">
|
||||||
<input type="hidden" name="id" value="' . $object->id.'">
|
<input type="hidden" name="id" value="' . $object->id.'">
|
||||||
';
|
';
|
||||||
|
|
||||||
|
|||||||
@ -3550,7 +3550,7 @@ class SupplierInvoiceLine extends CommonObjectLine
|
|||||||
$this->error = 'ErrorProductTypeMustBe0orMore';
|
$this->error = 'ErrorProductTypeMustBe0orMore';
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (!empty($this->fk_product)) {
|
if (!empty($this->fk_product) && $this->fk_product > 0) {
|
||||||
// Check product exists
|
// Check product exists
|
||||||
$result = Product::isExistingObject('product', $this->fk_product);
|
$result = Product::isExistingObject('product', $this->fk_product);
|
||||||
if ($result <= 0) {
|
if ($result <= 0) {
|
||||||
@ -3583,7 +3583,7 @@ class SupplierInvoiceLine extends CommonObjectLine
|
|||||||
$sql .= " ".price2num($this->localtax2_tx).",";
|
$sql .= " ".price2num($this->localtax2_tx).",";
|
||||||
$sql .= " '".$this->db->escape($this->localtax1_type)."',";
|
$sql .= " '".$this->db->escape($this->localtax1_type)."',";
|
||||||
$sql .= " '".$this->db->escape($this->localtax2_type)."',";
|
$sql .= " '".$this->db->escape($this->localtax2_type)."',";
|
||||||
$sql .= ' '.(!empty($this->fk_product) ? $this->fk_product : "null").',';
|
$sql .= ' '.((!empty($this->fk_product) && $this->fk_product > 0) ? $this->fk_product : "null").',';
|
||||||
$sql .= " ".((int) $this->product_type).",";
|
$sql .= " ".((int) $this->product_type).",";
|
||||||
$sql .= " ".price2num($this->remise_percent).",";
|
$sql .= " ".price2num($this->remise_percent).",";
|
||||||
$sql .= ' '.(! empty($this->fk_remise_except) ? ((int) $this->fk_remise_except) : "null").',';
|
$sql .= ' '.(! empty($this->fk_remise_except) ? ((int) $this->fk_remise_except) : "null").',';
|
||||||
|
|||||||
@ -2303,10 +2303,11 @@ if ($action == 'create') {
|
|||||||
//$result = $object->getLinesArray();
|
//$result = $object->getLinesArray();
|
||||||
|
|
||||||
|
|
||||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '#addline' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
|
||||||
<input type="hidden" name="token" value="'.newToken().'">
|
<input type="hidden" name="token" value="'.newToken().'">
|
||||||
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
<input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
|
||||||
<input type="hidden" name="mode" value="">
|
<input type="hidden" name="mode" value="">
|
||||||
|
<input type="hidden" name="page_y" value="">
|
||||||
<input type="hidden" name="id" value="'.$object->id.'">
|
<input type="hidden" name="id" value="'.$object->id.'">
|
||||||
<input type="hidden" name="socid" value="'.$societe->id.'">
|
<input type="hidden" name="socid" value="'.$societe->id.'">
|
||||||
';
|
';
|
||||||
|
|||||||
@ -3292,10 +3292,11 @@ if ($action == 'create') {
|
|||||||
/*
|
/*
|
||||||
* Lines
|
* Lines
|
||||||
*/
|
*/
|
||||||
print '<form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '#addline' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">';
|
print '<form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
print '<input type="hidden" name="action" value="'.(($action != 'editline') ? 'addline' : 'updateline').'">';
|
print '<input type="hidden" name="action" value="'.(($action != 'editline') ? 'addline' : 'updateline').'">';
|
||||||
print '<input type="hidden" name="mode" value="">';
|
print '<input type="hidden" name="mode" value="">';
|
||||||
|
print '<input type="hidden" name="page_y" value="">';
|
||||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||||
print '<input type="hidden" name="socid" value="'.$societe->id.'">';
|
print '<input type="hidden" name="socid" value="'.$societe->id.'">';
|
||||||
|
|
||||||
|
|||||||
@ -45,10 +45,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
|
|
||||||
if (!$user->rights->fournisseur->facture->lire) {
|
|
||||||
accessforbidden();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array('products', 'bills', 'companies', 'projects'));
|
$langs->loadLangs(array('products', 'bills', 'companies', 'projects'));
|
||||||
|
|
||||||
@ -214,6 +210,16 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
|
|||||||
$object->fields = dol_sort_array($object->fields, 'position');
|
$object->fields = dol_sort_array($object->fields, 'position');
|
||||||
$arrayfields = dol_sort_array($arrayfields, 'position');
|
$arrayfields = dol_sort_array($arrayfields, 'position');
|
||||||
|
|
||||||
|
if ((empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD))
|
||||||
|
|| (empty($conf->supplier_invoice->enabled) && !empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD))) {
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
if ((empty($user->rights->fournisseur->facture->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD))
|
||||||
|
|| (empty($user->rights->supplier_invoice->lire) && !empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD))) {
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
|
|||||||
@ -118,10 +118,12 @@ if ($user->socid) {
|
|||||||
// require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php';
|
// require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php';
|
||||||
// $object = new PaiementFourn($db);
|
// $object = new PaiementFourn($db);
|
||||||
// restrictedArea($user, $object->element);
|
// restrictedArea($user, $object->element);
|
||||||
if ((empty($conf->fournisseur->enabled) && !empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || empty($conf->supplier_invoice->enabled)) {
|
if ((empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD))
|
||||||
|
|| (empty($conf->supplier_invoice->enabled) && !empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD))) {
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
if (!$user->rights->fournisseur->facture->lire || !$user->rights->supplier_invoice->lire) {
|
if ((empty($user->rights->fournisseur->facture->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD))
|
||||||
|
|| (empty($user->rights->supplier_invoice->lire) && !empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD))) {
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -27,5 +27,7 @@ Recipient=Recipient
|
|||||||
ErrorStockIsNotEnough=There's not enough stock
|
ErrorStockIsNotEnough=There's not enough stock
|
||||||
Shippable=Shippable
|
Shippable=Shippable
|
||||||
NonShippable=Not Shippable
|
NonShippable=Not Shippable
|
||||||
|
ShowShippableStatus=Show shippable status
|
||||||
ShowReceiving=Show delivery receipt
|
ShowReceiving=Show delivery receipt
|
||||||
NonExistentOrder=Nonexistent order
|
NonExistentOrder=Nonexistent order
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Type of line (0=product, 1=service)
|
|||||||
FileWithDataToImport=File with data to import
|
FileWithDataToImport=File with data to import
|
||||||
FileToImport=Source file to import
|
FileToImport=Source file to import
|
||||||
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
||||||
DownloadEmptyExample=Download template file with field content information (* are mandatory fields)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
||||||
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
||||||
SourceFileFormat=Source file format
|
SourceFileFormat=Source file format
|
||||||
|
|||||||
@ -9,3 +9,4 @@ WEBSITE_ALIASALT=أسماء الصفحات / الأسماء المستعارة
|
|||||||
WEBSITE_ALIASALTDesc=استخدم هنا قائمة بأسماء / أسماء مستعارة أخرى بحيث يمكن الوصول إلى الصفحة أيضًا باستخدام هذه الأسماء / الأسماء المستعارة الأخرى (على سبيل المثال ، الاسم القديم بعد إعادة تسمية الاسم المستعار للحفاظ على الرابط الخلفي في عمل الرابط / الاسم القديم). النحو هو: <br> Alternativename1 ، و Alternativename2 ، ...
|
WEBSITE_ALIASALTDesc=استخدم هنا قائمة بأسماء / أسماء مستعارة أخرى بحيث يمكن الوصول إلى الصفحة أيضًا باستخدام هذه الأسماء / الأسماء المستعارة الأخرى (على سبيل المثال ، الاسم القديم بعد إعادة تسمية الاسم المستعار للحفاظ على الرابط الخلفي في عمل الرابط / الاسم القديم). النحو هو: <br> Alternativename1 ، و Alternativename2 ، ...
|
||||||
WEBSITE_CSS_URL=عنوان URL لملف CSS الخارجي
|
WEBSITE_CSS_URL=عنوان URL لملف CSS الخارجي
|
||||||
WEBSITE_CSS_INLINE=محتوى ملف CSS (مشترك لجميع الصفحات)
|
WEBSITE_CSS_INLINE=محتوى ملف CSS (مشترك لجميع الصفحات)
|
||||||
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first '<strong>Import a full website template</strong>' or just '<strong>Add a page/container</strong>'.
|
||||||
|
|||||||
@ -30,3 +30,4 @@ NonShippable=Not Shippable
|
|||||||
ShowShippableStatus=Show shippable status
|
ShowShippableStatus=Show shippable status
|
||||||
ShowReceiving=Show delivery receipt
|
ShowReceiving=Show delivery receipt
|
||||||
NonExistentOrder=Nonexistent order
|
NonExistentOrder=Nonexistent order
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Type of line (0=product, 1=service)
|
|||||||
FileWithDataToImport=File with data to import
|
FileWithDataToImport=File with data to import
|
||||||
FileToImport=Source file to import
|
FileToImport=Source file to import
|
||||||
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
||||||
DownloadEmptyExample=Download template file with field content information (* are mandatory fields)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
||||||
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
||||||
SourceFileFormat=Source file format
|
SourceFileFormat=Source file format
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Type of line (0=product, 1=نوع الخط (0= منت
|
|||||||
FileWithDataToImport=ملف استيراد البيانات
|
FileWithDataToImport=ملف استيراد البيانات
|
||||||
FileToImport=مصدر لاستيراد ملف
|
FileToImport=مصدر لاستيراد ملف
|
||||||
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
||||||
DownloadEmptyExample=Download template file with field content information (* are mandatory fields)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
||||||
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
||||||
SourceFileFormat=مصدر تنسيق ملف
|
SourceFileFormat=مصدر تنسيق ملف
|
||||||
|
|||||||
@ -27,5 +27,7 @@ Recipient=Recipient
|
|||||||
ErrorStockIsNotEnough=There's not enough stock
|
ErrorStockIsNotEnough=There's not enough stock
|
||||||
Shippable=Shippable
|
Shippable=Shippable
|
||||||
NonShippable=Not Shippable
|
NonShippable=Not Shippable
|
||||||
|
ShowShippableStatus=Show shippable status
|
||||||
ShowReceiving=Show delivery receipt
|
ShowReceiving=Show delivery receipt
|
||||||
NonExistentOrder=Nonexistent order
|
NonExistentOrder=Nonexistent order
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Type of line (0=product, 1=service)
|
|||||||
FileWithDataToImport=File with data to import
|
FileWithDataToImport=File with data to import
|
||||||
FileToImport=Source file to import
|
FileToImport=Source file to import
|
||||||
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
||||||
DownloadEmptyExample=Download template file with field content information (* are mandatory fields)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
||||||
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
||||||
SourceFileFormat=Source file format
|
SourceFileFormat=Source file format
|
||||||
|
|||||||
@ -27,5 +27,7 @@ Recipient=Получател
|
|||||||
ErrorStockIsNotEnough=Няма достатъчна наличност
|
ErrorStockIsNotEnough=Няма достатъчна наличност
|
||||||
Shippable=Годно за изпращане
|
Shippable=Годно за изпращане
|
||||||
NonShippable=Негодно за изпращане
|
NonShippable=Негодно за изпращане
|
||||||
|
ShowShippableStatus=Show shippable status
|
||||||
ShowReceiving=Показване на разписка за доставка
|
ShowReceiving=Показване на разписка за доставка
|
||||||
NonExistentOrder=Несъществуваща поръчка
|
NonExistentOrder=Несъществуваща поръчка
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Тип ред (0 = продукт, 1 = услуга)
|
|||||||
FileWithDataToImport=Файл с данни за импортиране
|
FileWithDataToImport=Файл с данни за импортиране
|
||||||
FileToImport=Входен файл за импортиране
|
FileToImport=Входен файл за импортиране
|
||||||
FileMustHaveOneOfFollowingFormat=Файлът за импортиране трябва да бъде в един от следните формати
|
FileMustHaveOneOfFollowingFormat=Файлът за импортиране трябва да бъде в един от следните формати
|
||||||
DownloadEmptyExample=Изтегляне на шаблонния файл с информация за съдържанието на полето (* са задължителни полета)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Изберете формата на файла, който да използвате като формат за импортиране, като кликнете върху иконата на %s, за да го изберете...
|
ChooseFormatOfFileToImport=Изберете формата на файла, който да използвате като формат за импортиране, като кликнете върху иконата на %s, за да го изберете...
|
||||||
ChooseFileToImport=Прикачете файл, след това кликнете върху иконата %s, за да изберете файла като източник при импортиране...
|
ChooseFileToImport=Прикачете файл, след това кликнете върху иконата %s, за да изберете файла като източник при импортиране...
|
||||||
SourceFileFormat=Формат на входния файл
|
SourceFileFormat=Формат на входния файл
|
||||||
|
|||||||
@ -27,5 +27,7 @@ Recipient=Recipient
|
|||||||
ErrorStockIsNotEnough=There's not enough stock
|
ErrorStockIsNotEnough=There's not enough stock
|
||||||
Shippable=Shippable
|
Shippable=Shippable
|
||||||
NonShippable=Not Shippable
|
NonShippable=Not Shippable
|
||||||
|
ShowShippableStatus=Show shippable status
|
||||||
ShowReceiving=Show delivery receipt
|
ShowReceiving=Show delivery receipt
|
||||||
NonExistentOrder=Nonexistent order
|
NonExistentOrder=Nonexistent order
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Type of line (0=product, 1=service)
|
|||||||
FileWithDataToImport=File with data to import
|
FileWithDataToImport=File with data to import
|
||||||
FileToImport=Source file to import
|
FileToImport=Source file to import
|
||||||
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
||||||
DownloadEmptyExample=Download template file with field content information (* are mandatory fields)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
||||||
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
||||||
SourceFileFormat=Source file format
|
SourceFileFormat=Source file format
|
||||||
|
|||||||
@ -27,5 +27,7 @@ Recipient=Recipient
|
|||||||
ErrorStockIsNotEnough=There's not enough stock
|
ErrorStockIsNotEnough=There's not enough stock
|
||||||
Shippable=Shippable
|
Shippable=Shippable
|
||||||
NonShippable=Not Shippable
|
NonShippable=Not Shippable
|
||||||
|
ShowShippableStatus=Show shippable status
|
||||||
ShowReceiving=Show delivery receipt
|
ShowReceiving=Show delivery receipt
|
||||||
NonExistentOrder=Nonexistent order
|
NonExistentOrder=Nonexistent order
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Type of line (0=product, 1=service)
|
|||||||
FileWithDataToImport=File with data to import
|
FileWithDataToImport=File with data to import
|
||||||
FileToImport=Source file to import
|
FileToImport=Source file to import
|
||||||
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
||||||
DownloadEmptyExample=Download template file with field content information (* are mandatory fields)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
||||||
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
||||||
SourceFileFormat=Source file format
|
SourceFileFormat=Source file format
|
||||||
|
|||||||
@ -27,5 +27,7 @@ Recipient=Primalac
|
|||||||
ErrorStockIsNotEnough=There's not enough stock
|
ErrorStockIsNotEnough=There's not enough stock
|
||||||
Shippable=Shippable
|
Shippable=Shippable
|
||||||
NonShippable=Not Shippable
|
NonShippable=Not Shippable
|
||||||
|
ShowShippableStatus=Show shippable status
|
||||||
ShowReceiving=Show delivery receipt
|
ShowReceiving=Show delivery receipt
|
||||||
NonExistentOrder=Nonexistent order
|
NonExistentOrder=Nonexistent order
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Type of line (0=product, 1=service)
|
|||||||
FileWithDataToImport=File with data to import
|
FileWithDataToImport=File with data to import
|
||||||
FileToImport=Source file to import
|
FileToImport=Source file to import
|
||||||
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
FileMustHaveOneOfFollowingFormat=File to import must have one of following formats
|
||||||
DownloadEmptyExample=Download template file with field content information (* are mandatory fields)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it...
|
||||||
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
ChooseFileToImport=Upload file then click on the %s icon to select file as source import file...
|
||||||
SourceFileFormat=Source file format
|
SourceFileFormat=Source file format
|
||||||
|
|||||||
@ -27,5 +27,7 @@ Recipient=Destinatari
|
|||||||
ErrorStockIsNotEnough=No hi ha estoc suficient
|
ErrorStockIsNotEnough=No hi ha estoc suficient
|
||||||
Shippable=Es pot enviar
|
Shippable=Es pot enviar
|
||||||
NonShippable=No es pot enviar
|
NonShippable=No es pot enviar
|
||||||
|
ShowShippableStatus=Mostra l'estat d'enviament
|
||||||
ShowReceiving=Mostra el rebut d'entrega
|
ShowReceiving=Mostra el rebut d'entrega
|
||||||
NonExistentOrder=Comanda inexistent
|
NonExistentOrder=Comanda inexistent
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -33,7 +33,7 @@ FormatedImport=Assistent d'importació
|
|||||||
FormatedImportDesc1=Aquest mòdul us permet actualitzar les dades existents o afegir nous objectes a la base de dades d'un fitxer sense coneixements tècnics, utilitzant un assistent.
|
FormatedImportDesc1=Aquest mòdul us permet actualitzar les dades existents o afegir nous objectes a la base de dades d'un fitxer sense coneixements tècnics, utilitzant un assistent.
|
||||||
FormatedImportDesc2=El primer pas és triar el tipus de dades que voleu importar, a continuació, el format del fitxer font, a continuació, els camps que voleu importar.
|
FormatedImportDesc2=El primer pas és triar el tipus de dades que voleu importar, a continuació, el format del fitxer font, a continuació, els camps que voleu importar.
|
||||||
FormatedExport=Assistent d'exportació
|
FormatedExport=Assistent d'exportació
|
||||||
FormatedExportDesc1=Aquestes eines permeten l'exportació de dades personalitzades mitjançant un assistent, per ajudar-vos en el procés sense necessitat de coneixements tècnics.
|
FormatedExportDesc1=Aquestes eines permeten exportar dades personalitzades mitjançant un assistent per a ajudar-vos en el procés sense necessitat de coneixements tècnics.
|
||||||
FormatedExportDesc2=El primer pas és triar un conjunt de dades predefinit, després els camps que voleu exportar i en quin ordre.
|
FormatedExportDesc2=El primer pas és triar un conjunt de dades predefinit, després els camps que voleu exportar i en quin ordre.
|
||||||
FormatedExportDesc3=Quan se seleccionen les dades per a exportar, podeu triar el format del fitxer de sortida.
|
FormatedExportDesc3=Quan se seleccionen les dades per a exportar, podeu triar el format del fitxer de sortida.
|
||||||
Sheet=Fulla
|
Sheet=Fulla
|
||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Tipus de línia (0=producte, 1=servei)
|
|||||||
FileWithDataToImport=Arxiu que conté les dades a importar
|
FileWithDataToImport=Arxiu que conté les dades a importar
|
||||||
FileToImport=Arxiu origen a importar
|
FileToImport=Arxiu origen a importar
|
||||||
FileMustHaveOneOfFollowingFormat=El fitxer a importar ha de tenir un dels següents formats
|
FileMustHaveOneOfFollowingFormat=El fitxer a importar ha de tenir un dels següents formats
|
||||||
DownloadEmptyExample=Baixeu un fitxer de plantilla amb informació de contingut de camp (* són camps obligatoris)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Trieu el format del fitxer que voleu utilitzar com a format de fitxer d'importació fent clic a la icona %s per seleccionar-lo ...
|
ChooseFormatOfFileToImport=Trieu el format del fitxer que voleu utilitzar com a format de fitxer d'importació fent clic a la icona %s per seleccionar-lo ...
|
||||||
ChooseFileToImport=Pengeu un fitxer i feu clic a la icona %s per seleccionar el fitxer com a fitxer d'importació d'origen ...
|
ChooseFileToImport=Pengeu un fitxer i feu clic a la icona %s per seleccionar el fitxer com a fitxer d'importació d'origen ...
|
||||||
SourceFileFormat=Format de l'arxiu origen
|
SourceFileFormat=Format de l'arxiu origen
|
||||||
@ -80,7 +81,7 @@ SelectAtLeastOneField=Bascular com a mínim un camp origen a la columna de camps
|
|||||||
SelectFormat=Seleccioneu aquest format de fitxer d'importació
|
SelectFormat=Seleccioneu aquest format de fitxer d'importació
|
||||||
RunImportFile=Importa dades
|
RunImportFile=Importa dades
|
||||||
NowClickToRunTheImport=Comproveu els resultats de la simulació d'importació. Corregiu els errors i torneu a provar. <br> Quan la simulació no informa d'errors, pot procedir a importar les dades a la base de dades.
|
NowClickToRunTheImport=Comproveu els resultats de la simulació d'importació. Corregiu els errors i torneu a provar. <br> Quan la simulació no informa d'errors, pot procedir a importar les dades a la base de dades.
|
||||||
DataLoadedWithId=Les dades importades tindran un camp addicional a cada taula de base de dades amb aquest identificador d'importació: <b> %s </b>, per permetre que es pugui cercar en el cas d'investigar un problema relacionat amb aquesta importació.
|
DataLoadedWithId=Les dades importades tindran un camp addicional a cada taula de base de dades amb aquest identificador d'importació: <b> %s </b>, per a permetre que es pugui cercar en el cas d'investigar un problema relacionat amb aquesta importació.
|
||||||
ErrorMissingMandatoryValue=Les dades obligatòries estan buides al fitxer de codi font <b> %s </b>.
|
ErrorMissingMandatoryValue=Les dades obligatòries estan buides al fitxer de codi font <b> %s </b>.
|
||||||
TooMuchErrors=Encara hi ha 0xaek83365837f %s </b> altres línies d'origen amb errors, però la producció ha estat limitada.
|
TooMuchErrors=Encara hi ha 0xaek83365837f %s </b> altres línies d'origen amb errors, però la producció ha estat limitada.
|
||||||
TooMuchWarnings=Encara hi ha <b> %s </b> altres línies d'origen amb advertències, però la producció ha estat limitada.
|
TooMuchWarnings=Encara hi ha <b> %s </b> altres línies d'origen amb advertències, però la producció ha estat limitada.
|
||||||
|
|||||||
@ -27,5 +27,7 @@ Recipient=Příjemce
|
|||||||
ErrorStockIsNotEnough=Dostatečné množství není skladem
|
ErrorStockIsNotEnough=Dostatečné množství není skladem
|
||||||
Shippable=Doručitelné
|
Shippable=Doručitelné
|
||||||
NonShippable=Nedoručitelné
|
NonShippable=Nedoručitelné
|
||||||
|
ShowShippableStatus=Show shippable status
|
||||||
ShowReceiving=Zobrazit potvrzení o doručení
|
ShowReceiving=Zobrazit potvrzení o doručení
|
||||||
NonExistentOrder=Neexistující objednávka
|
NonExistentOrder=Neexistující objednávka
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Použitý typ řádku (0 = produkt, 1 = služba)
|
|||||||
FileWithDataToImport=Soubor s daty pro import
|
FileWithDataToImport=Soubor s daty pro import
|
||||||
FileToImport=Zdrojový soubor k importu
|
FileToImport=Zdrojový soubor k importu
|
||||||
FileMustHaveOneOfFollowingFormat=Importovaný soubor musí mít jeden z následujících formátů
|
FileMustHaveOneOfFollowingFormat=Importovaný soubor musí mít jeden z následujících formátů
|
||||||
DownloadEmptyExample=Stáhnout soubor šablony s informacemi o obsahu pole (* jsou povinná pole)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Vyberte formát souboru, který chcete použít jako formát souboru importu klepnutím na ikonu %s pro jeho výběr ...
|
ChooseFormatOfFileToImport=Vyberte formát souboru, který chcete použít jako formát souboru importu klepnutím na ikonu %s pro jeho výběr ...
|
||||||
ChooseFileToImport=Pro nahrání souboru klepněte na ikonku %s pro výběr souboru jako zdrojový soubor importu ...
|
ChooseFileToImport=Pro nahrání souboru klepněte na ikonku %s pro výběr souboru jako zdrojový soubor importu ...
|
||||||
SourceFileFormat=Zdrojový soubor
|
SourceFileFormat=Zdrojový soubor
|
||||||
|
|||||||
@ -48,7 +48,8 @@ CountriesNotInEEC=Lande ikke i EU
|
|||||||
CountriesInEECExceptMe=Lande i EU undtagen %s
|
CountriesInEECExceptMe=Lande i EU undtagen %s
|
||||||
CountriesExceptMe=Alle lande undtagen %s
|
CountriesExceptMe=Alle lande undtagen %s
|
||||||
AccountantFiles=Eksporter kildedokumenter
|
AccountantFiles=Eksporter kildedokumenter
|
||||||
ExportAccountingSourceDocHelp=Med dette værktøj kan du eksportere de kildehændelser (liste og PDF-filer), der blev brugt til at generere din regnskab. For at eksportere dine tidsskrifter skal du bruge menuindgangen %s - %s.
|
ExportAccountingSourceDocHelp=Med dette værktøj kan du eksportere de kildehændelser (liste i CSV og PDF-filer), der blev brugt til at generere din regnskab.
|
||||||
|
ExportAccountingSourceDocHelp2=For at eksportere dine tidsskrifter skal du bruge menuindgangen %s - %s.
|
||||||
VueByAccountAccounting=Vis efter regnskabskonto
|
VueByAccountAccounting=Vis efter regnskabskonto
|
||||||
VueBySubAccountAccounting=Vis efter regnskabsmæssig underkonto
|
VueBySubAccountAccounting=Vis efter regnskabsmæssig underkonto
|
||||||
|
|
||||||
|
|||||||
@ -2144,3 +2144,4 @@ YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=Du aktiverede forældet WS API. Du s
|
|||||||
RandomlySelectedIfSeveral=Valgt tilfældigt, hvis der er flere billeder tilgængelige
|
RandomlySelectedIfSeveral=Valgt tilfældigt, hvis der er flere billeder tilgængelige
|
||||||
DatabasePasswordObfuscated=Databaseadgangskode er tilsløret i conf-fil
|
DatabasePasswordObfuscated=Databaseadgangskode er tilsløret i conf-fil
|
||||||
DatabasePasswordNotObfuscated=Databaseadgangskode er IKKE tilsløret i conf-fil
|
DatabasePasswordNotObfuscated=Databaseadgangskode er IKKE tilsløret i conf-fil
|
||||||
|
APIsAreNotEnabled=API-moduler er ikke aktiveret
|
||||||
|
|||||||
@ -27,5 +27,7 @@ Recipient=Modtager
|
|||||||
ErrorStockIsNotEnough=Der er ikke nok lager
|
ErrorStockIsNotEnough=Der er ikke nok lager
|
||||||
Shippable=Fragtvarer
|
Shippable=Fragtvarer
|
||||||
NonShippable=Kan ikke sendes
|
NonShippable=Kan ikke sendes
|
||||||
|
ShowShippableStatus=Vis status, der kan sendes
|
||||||
ShowReceiving=Vis leverings kvittering
|
ShowReceiving=Vis leverings kvittering
|
||||||
NonExistentOrder=ikke-eksisterende ordre
|
NonExistentOrder=ikke-eksisterende ordre
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Lagermængder, der allerede er tildelt på tidligere linjer
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Strækningstype (0= produkt, 1= tjeneste)
|
|||||||
FileWithDataToImport=Fil med data til at importere
|
FileWithDataToImport=Fil med data til at importere
|
||||||
FileToImport=Kildefilen til at importere
|
FileToImport=Kildefilen til at importere
|
||||||
FileMustHaveOneOfFollowingFormat=Fil, der skal importeres, skal have et af følgende formater
|
FileMustHaveOneOfFollowingFormat=Fil, der skal importeres, skal have et af følgende formater
|
||||||
DownloadEmptyExample=Download skabelonfil med feltindholdsinformation (* er obligatoriske felter)
|
DownloadEmptyExample=Download skabelonfil med feltindholdsoplysninger
|
||||||
|
StarAreMandatory=* er obligatoriske felter
|
||||||
ChooseFormatOfFileToImport=Vælg det filformat, der skal bruges som importfilformat, ved at klikke på ikonet %s for at vælge det ...
|
ChooseFormatOfFileToImport=Vælg det filformat, der skal bruges som importfilformat, ved at klikke på ikonet %s for at vælge det ...
|
||||||
ChooseFileToImport=Upload fil og klik derefter på ikonet %s for at vælge fil som kilde importfil ...
|
ChooseFileToImport=Upload fil og klik derefter på ikonet %s for at vælge fil som kilde importfil ...
|
||||||
SourceFileFormat=Kilde filformat
|
SourceFileFormat=Kilde filformat
|
||||||
|
|||||||
@ -37,15 +37,7 @@ About = Om
|
|||||||
KnowledgeManagementAbout = Om Knowledge Management
|
KnowledgeManagementAbout = Om Knowledge Management
|
||||||
KnowledgeManagementAboutPage = Videnstyring om side
|
KnowledgeManagementAboutPage = Videnstyring om side
|
||||||
|
|
||||||
#
|
|
||||||
# Sample page
|
|
||||||
#
|
|
||||||
KnowledgeManagementArea = Videnshåndtering
|
KnowledgeManagementArea = Videnshåndtering
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Menu
|
|
||||||
#
|
|
||||||
MenuKnowledgeRecord = Videnbase
|
MenuKnowledgeRecord = Videnbase
|
||||||
ListKnowledgeRecord = Liste over artikler
|
ListKnowledgeRecord = Liste over artikler
|
||||||
NewKnowledgeRecord = Ny artikel
|
NewKnowledgeRecord = Ny artikel
|
||||||
@ -53,3 +45,5 @@ ValidateReply = Valider løsning
|
|||||||
KnowledgeRecords = Artikler
|
KnowledgeRecords = Artikler
|
||||||
KnowledgeRecord = Artikel
|
KnowledgeRecord = Artikel
|
||||||
KnowledgeRecordExtraFields = Ekstra felter til artikel
|
KnowledgeRecordExtraFields = Ekstra felter til artikel
|
||||||
|
GroupOfTicket=Gruppe af billetter
|
||||||
|
YouCanLinkArticleToATicketCategory=Du kan linke en artikel til en billetgruppe (så artiklen vil blive foreslået under kvalificeringen af nye billetter)
|
||||||
|
|||||||
@ -4,6 +4,7 @@ Language_ar_AR=Arabisk
|
|||||||
Language_ar_EG=Arabisk (Egypten)
|
Language_ar_EG=Arabisk (Egypten)
|
||||||
Language_ar_SA=Arabisk
|
Language_ar_SA=Arabisk
|
||||||
Language_ar_TN=Arabisk (Tunesien)
|
Language_ar_TN=Arabisk (Tunesien)
|
||||||
|
Language_ar_IQ=Arabisk (Irak)
|
||||||
Language_az_AZ=Aserbajdsjansk
|
Language_az_AZ=Aserbajdsjansk
|
||||||
Language_bn_BD=Bengali
|
Language_bn_BD=Bengali
|
||||||
Language_bn_IN=Bengali (Indien)
|
Language_bn_IN=Bengali (Indien)
|
||||||
@ -83,6 +84,7 @@ Language_ne_NP=nepalesisk
|
|||||||
Language_nl_BE=Hollandsk (Belgien)
|
Language_nl_BE=Hollandsk (Belgien)
|
||||||
Language_nl_NL=Hollandske
|
Language_nl_NL=Hollandske
|
||||||
Language_pl_PL=Polsk
|
Language_pl_PL=Polsk
|
||||||
|
Language_pt_AO=Portugisisk (Angola)
|
||||||
Language_pt_BR=Portugisisk (Brasilien)
|
Language_pt_BR=Portugisisk (Brasilien)
|
||||||
Language_pt_PT=Portugisisk
|
Language_pt_PT=Portugisisk
|
||||||
Language_ro_MD=Rumænsk (Moldavien)
|
Language_ro_MD=Rumænsk (Moldavien)
|
||||||
|
|||||||
@ -277,7 +277,7 @@ PriceByCustomer=Forskellige priser for hver kunde
|
|||||||
PriceCatalogue=En enkelt salgspris pr. Produkt / service
|
PriceCatalogue=En enkelt salgspris pr. Produkt / service
|
||||||
PricingRule=Regler for salgspriser
|
PricingRule=Regler for salgspriser
|
||||||
AddCustomerPrice=Tilføj pris ved kunde
|
AddCustomerPrice=Tilføj pris ved kunde
|
||||||
ForceUpdateChildPriceSoc=Indstil samme pris på kundernes datterselskaber
|
ForceUpdateChildPriceSoc=Angiv samme pris på kundens datterselskaber
|
||||||
PriceByCustomerLog=Log af tidligere kundepriser
|
PriceByCustomerLog=Log af tidligere kundepriser
|
||||||
MinimumPriceLimit=Minimumsprisen kan ikke være lavere end %s
|
MinimumPriceLimit=Minimumsprisen kan ikke være lavere end %s
|
||||||
MinimumRecommendedPrice=Minimum anbefalet pris er: %s
|
MinimumRecommendedPrice=Minimum anbefalet pris er: %s
|
||||||
@ -296,6 +296,7 @@ ComposedProductIncDecStock=Forøg / sænk lagerbeholdning ved forældreændring
|
|||||||
ComposedProduct=Børneprodukter
|
ComposedProduct=Børneprodukter
|
||||||
MinSupplierPrice=Min købskurs
|
MinSupplierPrice=Min købskurs
|
||||||
MinCustomerPrice=Mindste salgspris
|
MinCustomerPrice=Mindste salgspris
|
||||||
|
NoDynamicPrice=Ingen dynamisk pris
|
||||||
DynamicPriceConfiguration=Dynamisk priskonfiguration
|
DynamicPriceConfiguration=Dynamisk priskonfiguration
|
||||||
DynamicPriceDesc=Du kan definere matematiske formler til beregning af kunde- eller leverandørpriser. Sådanne formler kan bruge alle matematiske operatorer, nogle konstanter og variabler. Du kan her definere de variabler, du vil bruge. Hvis variablen har brug for en automatisk opdatering, kan du definere den eksterne URL, så Dolibarr kan opdatere værdien automatisk.
|
DynamicPriceDesc=Du kan definere matematiske formler til beregning af kunde- eller leverandørpriser. Sådanne formler kan bruge alle matematiske operatorer, nogle konstanter og variabler. Du kan her definere de variabler, du vil bruge. Hvis variablen har brug for en automatisk opdatering, kan du definere den eksterne URL, så Dolibarr kan opdatere værdien automatisk.
|
||||||
AddVariable=Tilføj variabel
|
AddVariable=Tilføj variabel
|
||||||
|
|||||||
@ -60,7 +60,7 @@ EnhancedValueOfWarehouses=Lager værdi
|
|||||||
UserWarehouseAutoCreate=Opret et brugerlager automatisk, når du opretter en bruger
|
UserWarehouseAutoCreate=Opret et brugerlager automatisk, når du opretter en bruger
|
||||||
AllowAddLimitStockByWarehouse=Administrer også værdi for minimum og ønsket lager pr. Parring (produktlager) ud over værdien for minimum og ønsket lager pr. Produkt
|
AllowAddLimitStockByWarehouse=Administrer også værdi for minimum og ønsket lager pr. Parring (produktlager) ud over værdien for minimum og ønsket lager pr. Produkt
|
||||||
RuleForWarehouse=Regel for lagre
|
RuleForWarehouse=Regel for lagre
|
||||||
WarehouseAskWarehouseOnThirparty=Indstil et lager på tredjepart
|
WarehouseAskWarehouseOnThirparty=Indstil et lager på tredjeparter
|
||||||
WarehouseAskWarehouseDuringPropal=Sæt et lager på kommercielle forslag
|
WarehouseAskWarehouseDuringPropal=Sæt et lager på kommercielle forslag
|
||||||
WarehouseAskWarehouseDuringOrder=Indstil et lager med salgsordrer
|
WarehouseAskWarehouseDuringOrder=Indstil et lager med salgsordrer
|
||||||
UserDefaultWarehouse=Indstil et lager til brugere
|
UserDefaultWarehouse=Indstil et lager til brugere
|
||||||
@ -167,8 +167,8 @@ MovementTransferStock=Lageroverførsel af produkt %s til et andet lager
|
|||||||
InventoryCodeShort=Inv./Mov. kode
|
InventoryCodeShort=Inv./Mov. kode
|
||||||
NoPendingReceptionOnSupplierOrder=Ingen afventende modtagelse på grund af åben indkøbsordre
|
NoPendingReceptionOnSupplierOrder=Ingen afventende modtagelse på grund af åben indkøbsordre
|
||||||
ThisSerialAlreadyExistWithDifferentDate=Dette parti / serienummer (<strong> %s </strong>) eksisterer allerede, men med forskellige eatby eller sellby dato (fundet <strong> %s </strong> men du skrev <strong> %s </strong>)
|
ThisSerialAlreadyExistWithDifferentDate=Dette parti / serienummer (<strong> %s </strong>) eksisterer allerede, men med forskellige eatby eller sellby dato (fundet <strong> %s </strong> men du skrev <strong> %s </strong>)
|
||||||
OpenAll=Åbn for alle handlinger
|
OpenAnyMovement=Åben (alle bevægelser)
|
||||||
OpenInternal=Åben kun for interne handlinger
|
OpenInternal=Åben (kun intern bevægelse)
|
||||||
UseDispatchStatus=Brug en forsendelsesstatus (godkend / afvis) til produktlinjer ved modtagelse af indkøbsordrer
|
UseDispatchStatus=Brug en forsendelsesstatus (godkend / afvis) til produktlinjer ved modtagelse af indkøbsordrer
|
||||||
OptionMULTIPRICESIsOn=Mulighed for "flere priser pr. Segment" er på. Det betyder, at et produkt har flere salgspriser, så værdien til salg ikke kan beregnes
|
OptionMULTIPRICESIsOn=Mulighed for "flere priser pr. Segment" er på. Det betyder, at et produkt har flere salgspriser, så værdien til salg ikke kan beregnes
|
||||||
ProductStockWarehouseCreated=Lagergrænse for alarm og ønsket optimal lager korrekt oprettet
|
ProductStockWarehouseCreated=Lagergrænse for alarm og ønsket optimal lager korrekt oprettet
|
||||||
|
|||||||
@ -34,7 +34,8 @@ TicketDictResolution=Opgave - Afsluttet
|
|||||||
|
|
||||||
TicketTypeShortCOM=Kommercielt spørgsmål
|
TicketTypeShortCOM=Kommercielt spørgsmål
|
||||||
TicketTypeShortHELP=Anmodning om hjælp
|
TicketTypeShortHELP=Anmodning om hjælp
|
||||||
TicketTypeShortISSUE=Problem, fejl eller problemer
|
TicketTypeShortISSUE=Problem eller fejl
|
||||||
|
TicketTypeShortPROBLEM=Problem
|
||||||
TicketTypeShortREQUEST=Skift eller anmodning om forbedring
|
TicketTypeShortREQUEST=Skift eller anmodning om forbedring
|
||||||
TicketTypeShortPROJET=Projekt
|
TicketTypeShortPROJET=Projekt
|
||||||
TicketTypeShortOTHER=Andre
|
TicketTypeShortOTHER=Andre
|
||||||
@ -54,14 +55,15 @@ TypeContact_ticket_internal_SUPPORTTEC=Tildelt bruger
|
|||||||
TypeContact_ticket_external_SUPPORTCLI=Kundekontakt / hændelsesporing
|
TypeContact_ticket_external_SUPPORTCLI=Kundekontakt / hændelsesporing
|
||||||
TypeContact_ticket_external_CONTRIBUTOR=Ekstern bidragyder
|
TypeContact_ticket_external_CONTRIBUTOR=Ekstern bidragyder
|
||||||
|
|
||||||
OriginEmail=Email kilde
|
OriginEmail=E-mail reporter
|
||||||
Notify_TICKET_SENTBYMAIL=Send opgaver besked via Email
|
Notify_TICKET_SENTBYMAIL=Send opgaver besked via Email
|
||||||
|
|
||||||
# Status
|
# Status
|
||||||
Read=Læs
|
Read=Læs
|
||||||
Assigned=Tildelt
|
Assigned=Tildelt
|
||||||
InProgress=I gang
|
InProgress=I gang
|
||||||
NeedMoreInformation=Venter på information
|
NeedMoreInformation=Venter på reporterfeedback
|
||||||
|
NeedMoreInformationShort=Venter på feedback
|
||||||
Answered=Besvaret
|
Answered=Besvaret
|
||||||
Waiting=Venter
|
Waiting=Venter
|
||||||
Closed=Lukket
|
Closed=Lukket
|
||||||
@ -160,7 +162,7 @@ CreatedBy=Lavet af
|
|||||||
NewTicket=Ny opgave
|
NewTicket=Ny opgave
|
||||||
SubjectAnswerToTicket=Opgave svar
|
SubjectAnswerToTicket=Opgave svar
|
||||||
TicketTypeRequest=Anmodningstype
|
TicketTypeRequest=Anmodningstype
|
||||||
TicketCategory=Gruppe
|
TicketCategory=Billetkategorisering
|
||||||
SeeTicket=Se opgave
|
SeeTicket=Se opgave
|
||||||
TicketMarkedAsRead=Opgaven er blevet markeret som læst
|
TicketMarkedAsRead=Opgaven er blevet markeret som læst
|
||||||
TicketReadOn=Læs videre
|
TicketReadOn=Læs videre
|
||||||
@ -211,6 +213,7 @@ TicketMessageHelp=Kun denne tekst gemmes i meddelelseslisten på billetkort.
|
|||||||
TicketMessageSubstitutionReplacedByGenericValues=Substitutionsvariabler erstattes af generiske værdier.
|
TicketMessageSubstitutionReplacedByGenericValues=Substitutionsvariabler erstattes af generiske værdier.
|
||||||
TimeElapsedSince=Tid forløbet siden
|
TimeElapsedSince=Tid forløbet siden
|
||||||
TicketTimeToRead=Tid forløbet før læst
|
TicketTimeToRead=Tid forløbet før læst
|
||||||
|
TicketTimeElapsedBeforeSince=Forløbet tid før / siden
|
||||||
TicketContacts=Kontakter billet
|
TicketContacts=Kontakter billet
|
||||||
TicketDocumentsLinked=Dokumenter knyttet til opgaven
|
TicketDocumentsLinked=Dokumenter knyttet til opgaven
|
||||||
ConfirmReOpenTicket=Bekræft genåbne denne opgave?
|
ConfirmReOpenTicket=Bekræft genåbne denne opgave?
|
||||||
|
|||||||
@ -148,6 +148,7 @@ LDAPSynchronization=LDAP Synchronisierung
|
|||||||
LDAPFunctionsNotAvailableOnPHP=LDAP Funktionen nicht verfügbar in Deinem PHP
|
LDAPFunctionsNotAvailableOnPHP=LDAP Funktionen nicht verfügbar in Deinem PHP
|
||||||
LDAPFieldFullname=vollständiger Name
|
LDAPFieldFullname=vollständiger Name
|
||||||
ClickToDialSetup=Click-to-Dial-Moduleinstellungen
|
ClickToDialSetup=Click-to-Dial-Moduleinstellungen
|
||||||
|
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
|
||||||
MailToSendShipment=Sendungen
|
MailToSendShipment=Sendungen
|
||||||
MailToSendIntervention=Eingriffe
|
MailToSendIntervention=Eingriffe
|
||||||
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
||||||
|
|||||||
3
htdocs/langs/de_AT/salaries.lang
Normal file
3
htdocs/langs/de_AT/salaries.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - salaries
|
||||||
|
LastSalaries=Latest %s salary payments
|
||||||
|
AllSalaries=All salary payments
|
||||||
@ -5,3 +5,5 @@ PasswordChangedAndSentTo=Passwort geändert und an <b>%s</b> gesandt.
|
|||||||
PasswordChangeRequestSent=Antrag auf eine Änderung das Passworts für <b>%s</b> an <b>%s</b> gesandt.
|
PasswordChangeRequestSent=Antrag auf eine Änderung das Passworts für <b>%s</b> an <b>%s</b> gesandt.
|
||||||
LinkedToDolibarrUser=Mit Systembenutzer verknüpfen
|
LinkedToDolibarrUser=Mit Systembenutzer verknüpfen
|
||||||
LinkedToDolibarrThirdParty=Mit Partner verknüpfen
|
LinkedToDolibarrThirdParty=Mit Partner verknüpfen
|
||||||
|
NbOfUsers=No. of users
|
||||||
|
NbOfPermissions=No. of permissions
|
||||||
|
|||||||
2
htdocs/langs/de_AT/website.lang
Normal file
2
htdocs/langs/de_AT/website.lang
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - website
|
||||||
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first '<strong>Import a full website template</strong>' or just '<strong>Add a page/container</strong>'.
|
||||||
@ -5,6 +5,7 @@ WEBSITE_TYPE_CONTAINER=Seiten - / Containertyp
|
|||||||
WEBSITE_PAGE_EXAMPLE=Webseite als Vorlage benutzen
|
WEBSITE_PAGE_EXAMPLE=Webseite als Vorlage benutzen
|
||||||
WEBSITE_ALIASALT=Zusätzliche Seitennamen / Aliase
|
WEBSITE_ALIASALT=Zusätzliche Seitennamen / Aliase
|
||||||
WEBSITE_CSS_URL=URL zu externer CSS Datei
|
WEBSITE_CSS_URL=URL zu externer CSS Datei
|
||||||
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first '<strong>Import a full website template</strong>' or just '<strong>Add a page/container</strong>'.
|
||||||
ViewSiteInNewTab=Webauftritt in neuem Tab anzeigen
|
ViewSiteInNewTab=Webauftritt in neuem Tab anzeigen
|
||||||
SetAsHomePage=Als Startseite definieren
|
SetAsHomePage=Als Startseite definieren
|
||||||
WebsiteAccounts=Webseitenkonten
|
WebsiteAccounts=Webseitenkonten
|
||||||
|
|||||||
@ -30,3 +30,4 @@ NonShippable=Nicht versandfertig
|
|||||||
ShowShippableStatus=Versandstatus anzeigen
|
ShowShippableStatus=Versandstatus anzeigen
|
||||||
ShowReceiving=Zustellbestätigung anzeigen
|
ShowReceiving=Zustellbestätigung anzeigen
|
||||||
NonExistentOrder=Auftrag existiert nicht
|
NonExistentOrder=Auftrag existiert nicht
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -30,10 +30,10 @@ ExportCsvSeparator=CSV-Trennzeichen
|
|||||||
ImportCsvSeparator=CSV-Trennzeichen
|
ImportCsvSeparator=CSV-Trennzeichen
|
||||||
Step=Schritt
|
Step=Schritt
|
||||||
FormatedImport=Import-Assistent
|
FormatedImport=Import-Assistent
|
||||||
FormatedImportDesc1=Mit diesem Modul können Sie vorhandene Daten aktualisieren oder mithilfe eines Assistenten neue Objekte aus einer Datei in die Datenbank einfügen, ohne über technische Kenntnisse zu verfügen.
|
FormatedImportDesc1=Dieses Modul ermöglicht den Import personalisierter Daten mithilfe eines Assistenten.\nTechnische Kenntnisse sind hierbei nicht erforderlich.
|
||||||
FormatedImportDesc2=Zunächst müssen Sie die Art der zu importierenden Daten, dann das Format der Quelldatei und dann die zu importierenden Felder auswählen.
|
FormatedImportDesc2=Zunächst müssen Sie die Art der zu importierenden Daten, dann das Format der Quelldatei und dann die zu importierenden Felder auswählen.
|
||||||
FormatedExport=Export-Assistent
|
FormatedExport=Export-Assistent
|
||||||
FormatedExportDesc1=Diese Tools ermöglichen den Export personalisierter Daten mithilfe eines Assistenten, um Sie dabei zu unterstützen, ohne dass technische Kenntnisse erforderlich sind.
|
FormatedExportDesc1=Dieses Modul ermöglicht den Export personalisierter Daten mithilfe eines Assistenten.\nTechnische Kenntnisse sind hierbei nicht erforderlich.
|
||||||
FormatedExportDesc2=Der erste Schritt besteht darin, einen vordefinierten Datensatz auszuwählen und dann anzugeben, welche Felder in welcher Reihenfolge exportiert werden sollen.
|
FormatedExportDesc2=Der erste Schritt besteht darin, einen vordefinierten Datensatz auszuwählen und dann anzugeben, welche Felder in welcher Reihenfolge exportiert werden sollen.
|
||||||
FormatedExportDesc3=Wenn zu exportierende Daten ausgewählt sind, können Sie das Format der Ausgabedatei auswählen.
|
FormatedExportDesc3=Wenn zu exportierende Daten ausgewählt sind, können Sie das Format der Ausgabedatei auswählen.
|
||||||
Sheet=Blatt
|
Sheet=Blatt
|
||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Art der Zeile (0=Produkt, 1=Leistung)
|
|||||||
FileWithDataToImport=Datei mit zu importierenden Daten
|
FileWithDataToImport=Datei mit zu importierenden Daten
|
||||||
FileToImport=Quelldatei für Import
|
FileToImport=Quelldatei für Import
|
||||||
FileMustHaveOneOfFollowingFormat=Die zu importierende Datei muss eines der folgenden Formate haben
|
FileMustHaveOneOfFollowingFormat=Die zu importierende Datei muss eines der folgenden Formate haben
|
||||||
DownloadEmptyExample=Vorlagendatei mit Feldinhaltsinformationen herunterladen (* sind Pflichtfelder)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Wählen Sie das Dateiformat aus, das als Importdateiformat verwendet werden soll, indem Sie auf das Symbol %s klicken, um es auszuwählen ...
|
ChooseFormatOfFileToImport=Wählen Sie das Dateiformat aus, das als Importdateiformat verwendet werden soll, indem Sie auf das Symbol %s klicken, um es auszuwählen ...
|
||||||
ChooseFileToImport=Datei hochladen und dann auf das Symbol %s klicken, um die Datei als Quell-Importdatei auszuwählen ...
|
ChooseFileToImport=Datei hochladen und dann auf das Symbol %s klicken, um die Datei als Quell-Importdatei auszuwählen ...
|
||||||
SourceFileFormat=Quelldateiformat
|
SourceFileFormat=Quelldateiformat
|
||||||
|
|||||||
@ -1,2 +1,3 @@
|
|||||||
# Dolibarr language file - Source file is en_US - admin
|
# Dolibarr language file - Source file is en_US - admin
|
||||||
|
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
|
||||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||||
|
|||||||
3
htdocs/langs/el_CY/users.lang
Normal file
3
htdocs/langs/el_CY/users.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - users
|
||||||
|
NbOfUsers=No. of users
|
||||||
|
NbOfPermissions=No. of permissions
|
||||||
2
htdocs/langs/el_CY/website.lang
Normal file
2
htdocs/langs/el_CY/website.lang
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - website
|
||||||
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first '<strong>Import a full website template</strong>' or just '<strong>Add a page/container</strong>'.
|
||||||
@ -27,5 +27,7 @@ Recipient=Παραλήπτης
|
|||||||
ErrorStockIsNotEnough=Δεν υπάρχει αρκετό απόθεμα
|
ErrorStockIsNotEnough=Δεν υπάρχει αρκετό απόθεμα
|
||||||
Shippable=Για Αποστολή
|
Shippable=Για Αποστολή
|
||||||
NonShippable=Δεν αποστέλλονται
|
NonShippable=Δεν αποστέλλονται
|
||||||
|
ShowShippableStatus=Show shippable status
|
||||||
ShowReceiving=Show delivery receipt
|
ShowReceiving=Show delivery receipt
|
||||||
NonExistentOrder=Ανύπαρκτη σειρά
|
NonExistentOrder=Ανύπαρκτη σειρά
|
||||||
|
StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines
|
||||||
|
|||||||
@ -53,7 +53,8 @@ TypeOfLineServiceOrProduct=Type of line (0=product, 1=service)
|
|||||||
FileWithDataToImport=File with data to import
|
FileWithDataToImport=File with data to import
|
||||||
FileToImport=Source file to import
|
FileToImport=Source file to import
|
||||||
FileMustHaveOneOfFollowingFormat=Το αρχείο για εισαγωγή πρέπει να έχει μία από τις ακόλουθες μορφές
|
FileMustHaveOneOfFollowingFormat=Το αρχείο για εισαγωγή πρέπει να έχει μία από τις ακόλουθες μορφές
|
||||||
DownloadEmptyExample=Λήψη αρχείου προτύπου με πληροφορίες περιεχομένου πεδίου (* είναι υποχρεωτικά πεδία)
|
DownloadEmptyExample=Download template file with field content information
|
||||||
|
StarAreMandatory=* are mandatory fields
|
||||||
ChooseFormatOfFileToImport=Επιλέξτε τη μορφή αρχείου που θα χρησιμοποιηθεί ως μορφή αρχείου εισαγωγής κάνοντας κλικ στο εικονίδιο %s για να το επιλέξετε ...
|
ChooseFormatOfFileToImport=Επιλέξτε τη μορφή αρχείου που θα χρησιμοποιηθεί ως μορφή αρχείου εισαγωγής κάνοντας κλικ στο εικονίδιο %s για να το επιλέξετε ...
|
||||||
ChooseFileToImport=Μεταφορτώστε το αρχείο και κάντε κλικ στο εικονίδιο %s για να επιλέξετε αρχείο ως αρχείο εισαγωγής πηγής ...
|
ChooseFileToImport=Μεταφορτώστε το αρχείο και κάντε κλικ στο εικονίδιο %s για να επιλέξετε αρχείο ως αρχείο εισαγωγής πηγής ...
|
||||||
SourceFileFormat=Source file format
|
SourceFileFormat=Source file format
|
||||||
|
|||||||
@ -3,6 +3,7 @@ OldVATRates=Old GST rate
|
|||||||
NewVATRates=New GST rate
|
NewVATRates=New GST rate
|
||||||
DictionaryVAT=GST Rates or Sales Tax Rates
|
DictionaryVAT=GST Rates or Sales Tax Rates
|
||||||
OptionVatMode=GST due
|
OptionVatMode=GST due
|
||||||
|
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
|
||||||
LinkColor=Colour of links
|
LinkColor=Colour of links
|
||||||
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
||||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||||
|
|||||||
3
htdocs/langs/en_AU/salaries.lang
Normal file
3
htdocs/langs/en_AU/salaries.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - salaries
|
||||||
|
LastSalaries=Latest %s salary payments
|
||||||
|
AllSalaries=All salary payments
|
||||||
3
htdocs/langs/en_AU/users.lang
Normal file
3
htdocs/langs/en_AU/users.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - users
|
||||||
|
NbOfUsers=No. of users
|
||||||
|
NbOfPermissions=No. of permissions
|
||||||
2
htdocs/langs/en_AU/website.lang
Normal file
2
htdocs/langs/en_AU/website.lang
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - website
|
||||||
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first '<strong>Import a full website template</strong>' or just '<strong>Add a page/container</strong>'.
|
||||||
@ -2,6 +2,7 @@
|
|||||||
LocalTax1Management=PST Management
|
LocalTax1Management=PST Management
|
||||||
CompanyZip=Postal code
|
CompanyZip=Postal code
|
||||||
LDAPFieldZip=Postal code
|
LDAPFieldZip=Postal code
|
||||||
|
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
|
||||||
FormatZip=Postal code
|
FormatZip=Postal code
|
||||||
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
||||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||||
|
|||||||
3
htdocs/langs/en_CA/salaries.lang
Normal file
3
htdocs/langs/en_CA/salaries.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - salaries
|
||||||
|
LastSalaries=Latest %s salary payments
|
||||||
|
AllSalaries=All salary payments
|
||||||
3
htdocs/langs/en_CA/users.lang
Normal file
3
htdocs/langs/en_CA/users.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - users
|
||||||
|
NbOfUsers=No. of users
|
||||||
|
NbOfPermissions=No. of permissions
|
||||||
2
htdocs/langs/en_CA/website.lang
Normal file
2
htdocs/langs/en_CA/website.lang
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - website
|
||||||
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first '<strong>Import a full website template</strong>' or just '<strong>Add a page/container</strong>'.
|
||||||
@ -44,6 +44,7 @@ DictionaryAccountancyJournal=Finance journals
|
|||||||
CompanyZip=Postcode
|
CompanyZip=Postcode
|
||||||
LDAPFieldZip=Postcode
|
LDAPFieldZip=Postcode
|
||||||
GenbarcodeLocation=Barcode generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".<br>For example: /usr/local/bin/genbarcode
|
GenbarcodeLocation=Barcode generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".<br>For example: /usr/local/bin/genbarcode
|
||||||
|
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
|
||||||
FormatZip=Postcode
|
FormatZip=Postcode
|
||||||
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
||||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||||
|
|||||||
@ -13,6 +13,7 @@ ProposalsNumberingModules=Quotation numbering models
|
|||||||
ProposalsPDFModules=Quotation documents models
|
ProposalsPDFModules=Quotation documents models
|
||||||
FreeLegalTextOnProposal=Free text on quotations
|
FreeLegalTextOnProposal=Free text on quotations
|
||||||
WatermarkOnDraftProposal=Watermark on draft quotations (none if empty)
|
WatermarkOnDraftProposal=Watermark on draft quotations (none if empty)
|
||||||
|
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
|
||||||
MailToSendProposal=Customer quotations
|
MailToSendProposal=Customer quotations
|
||||||
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
||||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||||
|
|||||||
3
htdocs/langs/en_IN/salaries.lang
Normal file
3
htdocs/langs/en_IN/salaries.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - salaries
|
||||||
|
LastSalaries=Latest %s salary payments
|
||||||
|
AllSalaries=All salary payments
|
||||||
3
htdocs/langs/en_IN/users.lang
Normal file
3
htdocs/langs/en_IN/users.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - users
|
||||||
|
NbOfUsers=No. of users
|
||||||
|
NbOfPermissions=No. of permissions
|
||||||
2
htdocs/langs/en_IN/website.lang
Normal file
2
htdocs/langs/en_IN/website.lang
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - website
|
||||||
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first '<strong>Import a full website template</strong>' or just '<strong>Add a page/container</strong>'.
|
||||||
@ -1,3 +1,4 @@
|
|||||||
# Dolibarr language file - Source file is en_US - admin
|
# Dolibarr language file - Source file is en_US - admin
|
||||||
|
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
|
||||||
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
||||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||||
|
|||||||
3
htdocs/langs/en_SG/salaries.lang
Normal file
3
htdocs/langs/en_SG/salaries.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - salaries
|
||||||
|
LastSalaries=Latest %s salary payments
|
||||||
|
AllSalaries=All salary payments
|
||||||
3
htdocs/langs/en_SG/users.lang
Normal file
3
htdocs/langs/en_SG/users.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - users
|
||||||
|
NbOfUsers=No. of users
|
||||||
|
NbOfPermissions=No. of permissions
|
||||||
2
htdocs/langs/en_SG/website.lang
Normal file
2
htdocs/langs/en_SG/website.lang
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - website
|
||||||
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first '<strong>Import a full website template</strong>' or just '<strong>Add a page/container</strong>'.
|
||||||
@ -1261,8 +1261,8 @@ YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP
|
|||||||
DownloadMoreSkins=More skins to download
|
DownloadMoreSkins=More skins to download
|
||||||
SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset
|
SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset
|
||||||
SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset
|
SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset
|
||||||
ShowProfIdInAddress=Show professional id with addresses
|
ShowProfIdInAddress=Show professional ID with addresses
|
||||||
ShowVATIntaInAddress=Hide intra-Community VAT number with addresses
|
ShowVATIntaInAddress=Hide intra-Community VAT number
|
||||||
TranslationUncomplete=Partial translation
|
TranslationUncomplete=Partial translation
|
||||||
MAIN_DISABLE_METEO=Disable meteorological view
|
MAIN_DISABLE_METEO=Disable meteorological view
|
||||||
MeteoStdMod=Standard mode
|
MeteoStdMod=Standard mode
|
||||||
|
|||||||
@ -523,6 +523,7 @@ LDAPFieldCompany=Compañía
|
|||||||
ViewProductDescInFormAbility=Mostrar descripción de productos en formularios (de otro forma es mostrado en una venta emergente tooltip popup)
|
ViewProductDescInFormAbility=Mostrar descripción de productos en formularios (de otro forma es mostrado en una venta emergente tooltip popup)
|
||||||
Target=Destino
|
Target=Destino
|
||||||
Sell=Vender
|
Sell=Vender
|
||||||
|
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
|
||||||
PositionIntoComboList=Posición de la línea en las listas de combo
|
PositionIntoComboList=Posición de la línea en las listas de combo
|
||||||
SellTaxRate=Tasa de impuesto de venta
|
SellTaxRate=Tasa de impuesto de venta
|
||||||
RecuperableOnly=Sí, para el IVA "No percibido pero recuperable" dedicado a algún estado de Francia. Mantenga el valor en "No" en todos los demás casos.
|
RecuperableOnly=Sí, para el IVA "No percibido pero recuperable" dedicado a algún estado de Francia. Mantenga el valor en "No" en todos los demás casos.
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
# Dolibarr language file - Source file is en_US - admin
|
# Dolibarr language file - Source file is en_US - admin
|
||||||
|
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
|
||||||
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
OperationParamDesc=Define the values to use for the object of the action, or how to extract values. For example:<br>objproperty1=SET:the value to set<br>objproperty2=SET:a value with replacement of __objproperty1__<br>objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined<br>objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)<br>options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)<br>object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)<br><br>Use a ; char as separator to extract or set several properties.
|
||||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||||
|
|||||||
3
htdocs/langs/es_BO/salaries.lang
Normal file
3
htdocs/langs/es_BO/salaries.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - salaries
|
||||||
|
LastSalaries=Latest %s salary payments
|
||||||
|
AllSalaries=All salary payments
|
||||||
3
htdocs/langs/es_BO/users.lang
Normal file
3
htdocs/langs/es_BO/users.lang
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - users
|
||||||
|
NbOfUsers=No. of users
|
||||||
|
NbOfPermissions=No. of permissions
|
||||||
2
htdocs/langs/es_BO/website.lang
Normal file
2
htdocs/langs/es_BO/website.lang
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Dolibarr language file - Source file is en_US - website
|
||||||
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first '<strong>Import a full website template</strong>' or just '<strong>Add a page/container</strong>'.
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user