Merge branch 'Dolibarr:develop' into SELECT_PRODUITS_LIST
This commit is contained in:
commit
c601db1854
@ -4,7 +4,7 @@ LOG INALTERABLE
|
|||||||
## Fonctionnalité
|
## Fonctionnalité
|
||||||
|
|
||||||
Ce module trace, en temps réel, certains évènements métiers dans une log inaltérable (que vous ne pouvez pas modifier une fois enregistrés) de type blockchain.
|
Ce module trace, en temps réel, certains évènements métiers dans une log inaltérable (que vous ne pouvez pas modifier une fois enregistrés) de type blockchain.
|
||||||
Ce module est requis pour la compatibilité avec les exigences légales de certains pays (comme la France avec la loi Fincance 2016 - Norme NF535).
|
Ce module est requis pour la compatibilité avec les exigences légales de certains pays (comme la France avec la loi Finance 2016 - Norme NF525).
|
||||||
|
|
||||||
|
|
||||||
**Les évènements tracés de manière inaltérables sont:**
|
**Les évènements tracés de manière inaltérables sont:**
|
||||||
|
|||||||
@ -4,7 +4,7 @@ BLOCKED LOG
|
|||||||
## Feature
|
## Feature
|
||||||
|
|
||||||
This module tracks, in real time, some events into a non reversible log (that you can't modify once recorded) into a block chain.
|
This module tracks, in real time, some events into a non reversible log (that you can't modify once recorded) into a block chain.
|
||||||
This module provides compatibility with requirements of laws of some countries (like France with the law Fincance 2016 - Norme NF535).
|
This module provides compatibility with requirements of laws of some countries (like France with the law Finance 2016 - Norme NF525).
|
||||||
|
|
||||||
|
|
||||||
**The tracked events are:**
|
**The tracked events are:**
|
||||||
|
|||||||
@ -80,8 +80,6 @@ if (isModEnabled('margin')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// General $Variables
|
// General $Variables
|
||||||
$projectid = (GETPOST('projectid', 'int') ? GETPOST('projectid', 'int') : 0);
|
|
||||||
|
|
||||||
$id = (GETPOST('id', 'int') ? GETPOST('id', 'int') : GETPOST('facid', 'int')); // For backward compatibility
|
$id = (GETPOST('id', 'int') ? GETPOST('id', 'int') : GETPOST('facid', 'int')); // For backward compatibility
|
||||||
$ref = GETPOST('ref', 'alpha');
|
$ref = GETPOST('ref', 'alpha');
|
||||||
$socid = GETPOST('socid', 'int');
|
$socid = GETPOST('socid', 'int');
|
||||||
@ -100,6 +98,7 @@ $fac_rec = GETPOST('fac_rec', 'int');
|
|||||||
$facid = GETPOST('facid', 'int');
|
$facid = GETPOST('facid', 'int');
|
||||||
$ref_client = GETPOST('ref_client', 'int');
|
$ref_client = GETPOST('ref_client', 'int');
|
||||||
$rank = (GETPOST('rank', 'int') > 0) ? GETPOST('rank', 'int') : -1;
|
$rank = (GETPOST('rank', 'int') > 0) ? GETPOST('rank', 'int') : -1;
|
||||||
|
$projectid = (GETPOST('projectid', 'int') ? GETPOST('projectid', 'int') : 0);
|
||||||
|
|
||||||
// PDF
|
// PDF
|
||||||
$hidedetails = (GETPOST('hidedetails', 'int') ? GETPOST('hidedetails', 'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0));
|
$hidedetails = (GETPOST('hidedetails', 'int') ? GETPOST('hidedetails', 'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0));
|
||||||
@ -3149,7 +3148,7 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="POST" id="formtocreate" name="formtocreate">';
|
print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="POST" id="formtocreate" name="formtocreate">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
print '<input type="hidden" name="action" value="add">';
|
print '<input type="hidden" name="action" id="formtocreateaction" value="add">';
|
||||||
if ($soc->id > 0) {
|
if ($soc->id > 0) {
|
||||||
print '<input type="hidden" name="socid" value="'.$soc->id.'">'."\n";
|
print '<input type="hidden" name="socid" value="'.$soc->id.'">'."\n";
|
||||||
}
|
}
|
||||||
@ -3215,11 +3214,10 @@ if ($action == 'create') {
|
|||||||
$(\'input[name="force_fk_account"]\').val(\'1\');
|
$(\'input[name="force_fk_account"]\').val(\'1\');
|
||||||
$("#formtocreate").submit(); */
|
$("#formtocreate").submit(); */
|
||||||
|
|
||||||
// For company change, we must reuse data of comany, not input already done, so we call a GET with action=create, not a POST submit.
|
// For company change, we must submit page with action=create instead of action=add
|
||||||
console.log("We have changed the company - Reload page");
|
console.log("We have changed the company - Resubmit page");
|
||||||
var socid = $(this).val();
|
jQuery("#formtocreateaction").val("create");
|
||||||
var fac_rec = $(\'#fac_rec\').val();
|
jQuery("#formtocreate").submit();
|
||||||
window.location.href = "'.$_SERVER["PHP_SELF"].'?action=create&socid="+socid+"&fac_rec="+fac_rec;
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>';
|
</script>';
|
||||||
@ -5472,6 +5470,7 @@ if ($action == 'create') {
|
|||||||
if (!empty($conf->global->INVOICE_CAN_BE_EDITED_EVEN_IF_PAYMENT_DONE) || ($resteapayer == price2num($object->total_ttc, 'MT', 1) && empty($object->paye))) {
|
if (!empty($conf->global->INVOICE_CAN_BE_EDITED_EVEN_IF_PAYMENT_DONE) || ($resteapayer == price2num($object->total_ttc, 'MT', 1) && empty($object->paye))) {
|
||||||
if (!$objectidnext && $object->is_last_in_cycle()) {
|
if (!$objectidnext && $object->is_last_in_cycle()) {
|
||||||
if ($usercanunvalidate) {
|
if ($usercanunvalidate) {
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction($langs->trans('Modify'), '', 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=modif&token='.newToken(), '', true, $params);
|
print dolGetButtonAction($langs->trans('Modify'), '', 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=modif&token='.newToken(), '', true, $params);
|
||||||
} else {
|
} else {
|
||||||
$params['attr']['title'] = $langs->trans('NotEnoughPermissions');
|
$params['attr']['title'] = $langs->trans('NotEnoughPermissions');
|
||||||
@ -5502,6 +5501,7 @@ if ($action == 'create') {
|
|||||||
&& ($object->statut == Facture::STATUS_CLOSED || $object->statut == Facture::STATUS_ABANDONED || ($object->statut == 1 && $object->paye == 1)) // Condition ($object->statut == 1 && $object->paye == 1) should not happened but can be found due to corrupted data
|
&& ($object->statut == Facture::STATUS_CLOSED || $object->statut == Facture::STATUS_ABANDONED || ($object->statut == 1 && $object->paye == 1)) // Condition ($object->statut == 1 && $object->paye == 1) should not happened but can be found due to corrupted data
|
||||||
&& ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || $usercanreopen)) { // A paid invoice (partially or completely)
|
&& ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || $usercanreopen)) { // A paid invoice (partially or completely)
|
||||||
if ($object->close_code != 'replaced' || (!$objectidnext)) { // Not replaced by another invoice or replaced but the replacement invoice has been deleted
|
if ($object->close_code != 'replaced' || (!$objectidnext)) { // Not replaced by another invoice or replaced but the replacement invoice has been deleted
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction($langs->trans('ReOpen'), '', 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=reopen&token='.newToken(), '', true, $params);
|
print dolGetButtonAction($langs->trans('ReOpen'), '', 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=reopen&token='.newToken(), '', true, $params);
|
||||||
} else {
|
} else {
|
||||||
$params['attr']['title'] = $langs->trans("DisabledBecauseReplacedInvoice");
|
$params['attr']['title'] = $langs->trans("DisabledBecauseReplacedInvoice");
|
||||||
@ -5523,6 +5523,7 @@ if ($action == 'create') {
|
|||||||
// Validate
|
// Validate
|
||||||
if ($object->statut == Facture::STATUS_DRAFT && count($object->lines) > 0 && ((($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA || $object->type == Facture::TYPE_SITUATION) && (!empty($conf->global->FACTURE_ENABLE_NEGATIVE) || $object->total_ttc >= 0)) || ($object->type == Facture::TYPE_CREDIT_NOTE && $object->total_ttc <= 0))) {
|
if ($object->statut == Facture::STATUS_DRAFT && count($object->lines) > 0 && ((($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA || $object->type == Facture::TYPE_SITUATION) && (!empty($conf->global->FACTURE_ENABLE_NEGATIVE) || $object->total_ttc >= 0)) || ($object->type == Facture::TYPE_CREDIT_NOTE && $object->total_ttc <= 0))) {
|
||||||
if ($usercanvalidate) {
|
if ($usercanvalidate) {
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction($langs->trans('Validate'), '', 'default', $_SERVER["PHP_SELF"].'?facid='.$object->id.'&action=valid&token='.newToken(), '', true, $params);
|
print dolGetButtonAction($langs->trans('Validate'), '', 'default', $_SERVER["PHP_SELF"].'?facid='.$object->id.'&action=valid&token='.newToken(), '', true, $params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5534,8 +5535,10 @@ if ($action == 'create') {
|
|||||||
print '<span class="butActionRefused classfortooltip" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('SendMail').'</span>';
|
print '<span class="butActionRefused classfortooltip" title="'.$langs->trans("DisabledBecauseReplacedInvoice").'">'.$langs->trans('SendMail').'</span>';
|
||||||
} else {
|
} else {
|
||||||
if ($usercansend) {
|
if ($usercansend) {
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=presend&mode=init#formmailbeforetitle', '', true, $params);
|
print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=presend&mode=init#formmailbeforetitle', '', true, $params);
|
||||||
} else {
|
} else {
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction('', $langs->trans('SendMail'), 'default', '#', '', false, $params);
|
print dolGetButtonAction('', $langs->trans('SendMail'), 'default', '#', '', false, $params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5578,6 +5581,7 @@ if ($action == 'create') {
|
|||||||
} else {
|
} else {
|
||||||
// Sometimes we can receive more, so we accept to enter more and will offer a button to convert into discount (but it is not a credit note, just a prepayment done)
|
// Sometimes we can receive more, so we accept to enter more and will offer a button to convert into discount (but it is not a credit note, just a prepayment done)
|
||||||
//print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/paiement.php?facid='.$object->id.'&action=create&accountid='.$object->fk_account.'">'.$langs->trans('DoPayment').'</a>';
|
//print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/paiement.php?facid='.$object->id.'&action=create&accountid='.$object->fk_account.'">'.$langs->trans('DoPayment').'</a>';
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction($langs->trans('DoPayment'), '', 'default', DOL_URL_ROOT.'/compta/paiement.php?facid='.$object->id.'&action=create&accountid='.$object->fk_account, '', true, $params);
|
print dolGetButtonAction($langs->trans('DoPayment'), '', 'default', DOL_URL_ROOT.'/compta/paiement.php?facid='.$object->id.'&action=create&accountid='.$object->fk_account, '', true, $params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5630,6 +5634,7 @@ if ($action == 'create') {
|
|||||||
$params['attr']['title'] = $langs->trans('AmountPaidMustMatchAmountOfDownPayment');
|
$params['attr']['title'] = $langs->trans('AmountPaidMustMatchAmountOfDownPayment');
|
||||||
print dolGetButtonAction($langs->trans('ClassifyPaid'), '', 'default', '#', '', false, $params);
|
print dolGetButtonAction($langs->trans('ClassifyPaid'), '', 'default', '#', '', false, $params);
|
||||||
} else {
|
} else {
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction($langs->trans('ClassifyPaid'), '', 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=paid', '', true, $params);
|
print dolGetButtonAction($langs->trans('ClassifyPaid'), '', 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=paid', '', true, $params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5675,12 +5680,14 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
// Clone
|
// Clone
|
||||||
if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA) && $usercancreate) {
|
if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA) && $usercancreate) {
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction($langs->trans('ToClone'), '', 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=clone&object=invoice', '', true, $params);
|
print dolGetButtonAction($langs->trans('ToClone'), '', 'default', $_SERVER['PHP_SELF'].'?facid='.$object->id.'&action=clone&object=invoice', '', true, $params);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clone as predefined / Create template
|
// Clone as predefined / Create template
|
||||||
if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA) && $object->statut == 0 && $usercancreate) {
|
if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_DEPOSIT || $object->type == Facture::TYPE_PROFORMA) && $object->statut == 0 && $usercancreate) {
|
||||||
if (!$objectidnext && count($object->lines) > 0) {
|
if (!$objectidnext && count($object->lines) > 0) {
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction($langs->trans('ChangeIntoRepeatableInvoice'), '', 'default', DOL_URL_ROOT.'/compta/facture/card-rec.php?facid='.$object->id.'&action=create', '', true, $params);
|
print dolGetButtonAction($langs->trans('ChangeIntoRepeatableInvoice'), '', 'default', DOL_URL_ROOT.'/compta/facture/card-rec.php?facid='.$object->id.'&action=create', '', true, $params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5714,11 +5721,6 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
// Delete
|
// Delete
|
||||||
$isErasable = $object->is_erasable();
|
$isErasable = $object->is_erasable();
|
||||||
$params = array(
|
|
||||||
'attr' => array(
|
|
||||||
'class' => 'classfortooltip'
|
|
||||||
)
|
|
||||||
);
|
|
||||||
if ($usercandelete || ($usercancreate && $isErasable == 1)) { // isErasable = 1 means draft with temporary ref (draft can always be deleted with no need of permissions)
|
if ($usercandelete || ($usercancreate && $isErasable == 1)) { // isErasable = 1 means draft with temporary ref (draft can always be deleted with no need of permissions)
|
||||||
$enableDelete = false;
|
$enableDelete = false;
|
||||||
$deleteHref = '#';
|
$deleteHref = '#';
|
||||||
@ -5739,8 +5741,10 @@ if ($action == 'create') {
|
|||||||
$deleteHref = $_SERVER["PHP_SELF"].'?facid='.$object->id.'&action=delete&token='.newToken();
|
$deleteHref = $_SERVER["PHP_SELF"].'?facid='.$object->id.'&action=delete&token='.newToken();
|
||||||
$enableDelete = true;
|
$enableDelete = true;
|
||||||
}
|
}
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction($htmltooltip, $langs->trans('Delete'), 'delete', $deleteHref, '', $enableDelete, $params);
|
print dolGetButtonAction($htmltooltip, $langs->trans('Delete'), 'delete', $deleteHref, '', $enableDelete, $params);
|
||||||
} else {
|
} else {
|
||||||
|
$params['attr']['title'] = '';
|
||||||
print dolGetButtonAction($langs->trans('Delete'), $langs->trans('Delete'), 'delete', '#', '', false);
|
print dolGetButtonAction($langs->trans('Delete'), $langs->trans('Delete'), 'delete', '#', '', false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1793,11 +1793,11 @@ if ($resql) {
|
|||||||
|
|
||||||
$with_margin_info = false;
|
$with_margin_info = false;
|
||||||
if (isModEnabled('margin') && (
|
if (isModEnabled('margin') && (
|
||||||
!empty($arrayfields['total_pa']['checked'])
|
!empty($arrayfields['total_pa']['checked'])
|
||||||
|| !empty($arrayfields['total_margin']['checked'])
|
|| !empty($arrayfields['total_margin']['checked'])
|
||||||
|| !empty($arrayfields['total_margin_rate']['checked'])
|
|| !empty($arrayfields['total_margin_rate']['checked'])
|
||||||
|| !empty($arrayfields['total_mark_rate']['checked'])
|
|| !empty($arrayfields['total_mark_rate']['checked'])
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
$with_margin_info = true;
|
$with_margin_info = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -962,6 +962,8 @@ class CMailFile
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($res) {
|
if ($res) {
|
||||||
|
dol_syslog("CMailFile::sendfile: sendMsg, HOST=".$server.", PORT=".$conf->global->$keyforsmtpport, LOG_DEBUG);
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_MAIL_DEBUG)) {
|
if (!empty($conf->global->MAIN_MAIL_DEBUG)) {
|
||||||
$this->smtps->setDebug(true);
|
$this->smtps->setDebug(true);
|
||||||
}
|
}
|
||||||
@ -1096,7 +1098,11 @@ class CMailFile
|
|||||||
//$this->logger = new Swift_Plugins_Loggers_EchoLogger();
|
//$this->logger = new Swift_Plugins_Loggers_EchoLogger();
|
||||||
$this->mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($this->logger));
|
$this->mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($this->logger));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dol_syslog("CMailFile::sendfile: mailer->send, HOST=".$server.", PORT=".$conf->global->$keyforsmtpport, LOG_DEBUG);
|
||||||
|
|
||||||
// send mail
|
// send mail
|
||||||
|
$failedRecipients = array();
|
||||||
try {
|
try {
|
||||||
$result = $this->mailer->send($this->message, $failedRecipients);
|
$result = $this->mailer->send($this->message, $failedRecipients);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
|||||||
@ -911,8 +911,11 @@ abstract class CommonObject
|
|||||||
$out .= img_picto($langs->trans("Address"), 'map-marker-alt');
|
$out .= img_picto($langs->trans("Address"), 'map-marker-alt');
|
||||||
$out .= '</a> ';
|
$out .= '</a> ';
|
||||||
}
|
}
|
||||||
$out .= dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', ');
|
$address = dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', ');
|
||||||
$outdone++;
|
if ($address) {
|
||||||
|
$out .= $address;
|
||||||
|
$outdone++;
|
||||||
|
}
|
||||||
$outdone++;
|
$outdone++;
|
||||||
|
|
||||||
// List of extra languages
|
// List of extra languages
|
||||||
@ -938,6 +941,7 @@ abstract class CommonObject
|
|||||||
// If there is extra languages
|
// If there is extra languages
|
||||||
foreach ($arrayoflangcode as $extralangcode) {
|
foreach ($arrayoflangcode as $extralangcode) {
|
||||||
$s = picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"');
|
$s = picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"');
|
||||||
|
// This also call dol_format_address()
|
||||||
$coords = $this->getFullAddress(1, ', ', $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT, $extralangcode);
|
$coords = $this->getFullAddress(1, ', ', $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT, $extralangcode);
|
||||||
$htmltext .= $s.dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', ');
|
$htmltext .= $s.dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', ');
|
||||||
}
|
}
|
||||||
@ -946,7 +950,8 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!in_array($this->country_code, $countriesusingstate) && empty($conf->global->MAIN_FORCE_STATE_INTO_ADDRESS) // If MAIN_FORCE_STATE_INTO_ADDRESS is on, state is already returned previously with getFullAddress
|
// If MAIN_FORCE_STATE_INTO_ADDRESS is on, state is already returned previously with getFullAddress
|
||||||
|
if (!in_array($this->country_code, $countriesusingstate) && empty($conf->global->MAIN_FORCE_STATE_INTO_ADDRESS)
|
||||||
&& empty($conf->global->SOCIETE_DISABLE_STATE) && $this->state) {
|
&& empty($conf->global->SOCIETE_DISABLE_STATE) && $this->state) {
|
||||||
if (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 && $this->region) {
|
if (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 && $this->region) {
|
||||||
$out .= ($outdone ? ' - ' : '').$this->region.' - '.$this->state;
|
$out .= ($outdone ? ' - ' : '').$this->region.' - '.$this->state;
|
||||||
@ -956,6 +961,10 @@ abstract class CommonObject
|
|||||||
$outdone++;
|
$outdone++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($outdone) {
|
||||||
|
$out = '<div class="address inline-block">'.$out.'</div>';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($this->phone) || !empty($this->phone_pro) || !empty($this->phone_mobile) || !empty($this->phone_perso) || !empty($this->fax) || !empty($this->office_phone) || !empty($this->user_mobile) || !empty($this->office_fax)) {
|
if (!empty($this->phone) || !empty($this->phone_pro) || !empty($this->phone_mobile) || !empty($this->phone_perso) || !empty($this->fax) || !empty($this->office_phone) || !empty($this->user_mobile) || !empty($this->office_fax)) {
|
||||||
$out .= ($outdone ? '<br>' : '');
|
$out .= ($outdone ? '<br>' : '');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -836,57 +836,57 @@ class Conf
|
|||||||
// Avoid strict errors. TODO: Replace xxx->warning_delay with a property ->warning_delay_xxx
|
// Avoid strict errors. TODO: Replace xxx->warning_delay with a property ->warning_delay_xxx
|
||||||
if (isset($this->agenda)) {
|
if (isset($this->agenda)) {
|
||||||
$this->adherent->subscription = new stdClass();
|
$this->adherent->subscription = new stdClass();
|
||||||
$this->adherent->subscription->warning_delay = (isset($this->global->MAIN_DELAY_MEMBERS) ? $this->global->MAIN_DELAY_MEMBERS : 0) * 86400;
|
$this->adherent->subscription->warning_delay = (isset($this->global->MAIN_DELAY_MEMBERS) ? (int) $this->global->MAIN_DELAY_MEMBERS : 0) * 86400;
|
||||||
}
|
}
|
||||||
if (isset($this->agenda)) {
|
if (isset($this->agenda)) {
|
||||||
$this->agenda->warning_delay = (isset($this->global->MAIN_DELAY_ACTIONS_TODO) ? $this->global->MAIN_DELAY_ACTIONS_TODO : 7) * 86400;
|
$this->agenda->warning_delay = (isset($this->global->MAIN_DELAY_ACTIONS_TODO) ? (int) $this->global->MAIN_DELAY_ACTIONS_TODO : 7) * 86400;
|
||||||
}
|
}
|
||||||
if (isset($this->projet)) {
|
if (isset($this->projet)) {
|
||||||
$this->projet->warning_delay = (isset($this->global->MAIN_DELAY_PROJECT_TO_CLOSE) ? $this->global->MAIN_DELAY_PROJECT_TO_CLOSE : 7) * 86400;
|
$this->projet->warning_delay = (isset($this->global->MAIN_DELAY_PROJECT_TO_CLOSE) ? (int) $this->global->MAIN_DELAY_PROJECT_TO_CLOSE : 7) * 86400;
|
||||||
$this->projet->task = new StdClass();
|
$this->projet->task = new StdClass();
|
||||||
$this->projet->task->warning_delay = (isset($this->global->MAIN_DELAY_TASKS_TODO) ? $this->global->MAIN_DELAY_TASKS_TODO : 7) * 86400;
|
$this->projet->task->warning_delay = (isset($this->global->MAIN_DELAY_TASKS_TODO) ? (int) $this->global->MAIN_DELAY_TASKS_TODO : 7) * 86400;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($this->commande)) {
|
if (isset($this->commande)) {
|
||||||
$this->commande->client = new stdClass();
|
$this->commande->client = new stdClass();
|
||||||
$this->commande->fournisseur = new stdClass();
|
$this->commande->fournisseur = new stdClass();
|
||||||
$this->commande->client->warning_delay = (isset($this->global->MAIN_DELAY_ORDERS_TO_PROCESS) ? $this->global->MAIN_DELAY_ORDERS_TO_PROCESS : 2) * 86400;
|
$this->commande->client->warning_delay = (isset($this->global->MAIN_DELAY_ORDERS_TO_PROCESS) ? (int) $this->global->MAIN_DELAY_ORDERS_TO_PROCESS : 2) * 86400;
|
||||||
$this->commande->fournisseur->warning_delay = (isset($this->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS) ? $this->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS : 7) * 86400;
|
$this->commande->fournisseur->warning_delay = (isset($this->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS) ? (int) $this->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS : 7) * 86400;
|
||||||
}
|
}
|
||||||
if (isset($this->propal)) {
|
if (isset($this->propal)) {
|
||||||
$this->propal->cloture = new stdClass();
|
$this->propal->cloture = new stdClass();
|
||||||
$this->propal->facturation = new stdClass();
|
$this->propal->facturation = new stdClass();
|
||||||
$this->propal->cloture->warning_delay = (isset($this->global->MAIN_DELAY_PROPALS_TO_CLOSE) ? $this->global->MAIN_DELAY_PROPALS_TO_CLOSE : 0) * 86400;
|
$this->propal->cloture->warning_delay = (isset($this->global->MAIN_DELAY_PROPALS_TO_CLOSE) ? (int) $this->global->MAIN_DELAY_PROPALS_TO_CLOSE : 0) * 86400;
|
||||||
$this->propal->facturation->warning_delay = (isset($this->global->MAIN_DELAY_PROPALS_TO_BILL) ? $this->global->MAIN_DELAY_PROPALS_TO_BILL : 0) * 86400;
|
$this->propal->facturation->warning_delay = (isset($this->global->MAIN_DELAY_PROPALS_TO_BILL) ? (int) $this->global->MAIN_DELAY_PROPALS_TO_BILL : 0) * 86400;
|
||||||
}
|
}
|
||||||
if (isset($this->facture)) {
|
if (isset($this->facture)) {
|
||||||
$this->facture->client = new stdClass();
|
$this->facture->client = new stdClass();
|
||||||
$this->facture->fournisseur = new stdClass();
|
$this->facture->fournisseur = new stdClass();
|
||||||
$this->facture->client->warning_delay = (isset($this->global->MAIN_DELAY_CUSTOMER_BILLS_UNPAYED) ? $this->global->MAIN_DELAY_CUSTOMER_BILLS_UNPAYED : 0) * 86400;
|
$this->facture->client->warning_delay = (isset($this->global->MAIN_DELAY_CUSTOMER_BILLS_UNPAYED) ? (int) $this->global->MAIN_DELAY_CUSTOMER_BILLS_UNPAYED : 0) * 86400;
|
||||||
$this->facture->fournisseur->warning_delay = (isset($this->global->MAIN_DELAY_SUPPLIER_BILLS_TO_PAY) ? $this->global->MAIN_DELAY_SUPPLIER_BILLS_TO_PAY : 0) * 86400;
|
$this->facture->fournisseur->warning_delay = (isset($this->global->MAIN_DELAY_SUPPLIER_BILLS_TO_PAY) ? (int) $this->global->MAIN_DELAY_SUPPLIER_BILLS_TO_PAY : 0) * 86400;
|
||||||
}
|
}
|
||||||
if (isset($this->contrat)) {
|
if (isset($this->contrat)) {
|
||||||
$this->contrat->services = new stdClass();
|
$this->contrat->services = new stdClass();
|
||||||
$this->contrat->services->inactifs = new stdClass();
|
$this->contrat->services->inactifs = new stdClass();
|
||||||
$this->contrat->services->expires = new stdClass();
|
$this->contrat->services->expires = new stdClass();
|
||||||
$this->contrat->services->inactifs->warning_delay = (isset($this->global->MAIN_DELAY_NOT_ACTIVATED_SERVICES) ? $this->global->MAIN_DELAY_NOT_ACTIVATED_SERVICES : 0) * 86400;
|
$this->contrat->services->inactifs->warning_delay = (isset($this->global->MAIN_DELAY_NOT_ACTIVATED_SERVICES) ? (int) $this->global->MAIN_DELAY_NOT_ACTIVATED_SERVICES : 0) * 86400;
|
||||||
$this->contrat->services->expires->warning_delay = (isset($this->global->MAIN_DELAY_RUNNING_SERVICES) ? $this->global->MAIN_DELAY_RUNNING_SERVICES : 0) * 86400;
|
$this->contrat->services->expires->warning_delay = (isset($this->global->MAIN_DELAY_RUNNING_SERVICES) ? (int) $this->global->MAIN_DELAY_RUNNING_SERVICES : 0) * 86400;
|
||||||
}
|
}
|
||||||
if (isset($this->commande)) {
|
if (isset($this->commande)) {
|
||||||
$this->bank->rappro = new stdClass();
|
$this->bank->rappro = new stdClass();
|
||||||
$this->bank->cheque = new stdClass();
|
$this->bank->cheque = new stdClass();
|
||||||
$this->bank->rappro->warning_delay = (isset($this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE) ? $this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE : 0) * 86400;
|
$this->bank->rappro->warning_delay = (isset($this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE) ? (int) $this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE : 0) * 86400;
|
||||||
$this->bank->cheque->warning_delay = (isset($this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT) ? $this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT : 0) * 86400;
|
$this->bank->cheque->warning_delay = (isset($this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT) ? (int) $this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT : 0) * 86400;
|
||||||
}
|
}
|
||||||
if (isset($this->expensereport)) {
|
if (isset($this->expensereport)) {
|
||||||
$this->expensereport->approve = new stdClass();
|
$this->expensereport->approve = new stdClass();
|
||||||
$this->expensereport->approve->warning_delay = (isset($this->global->MAIN_DELAY_EXPENSEREPORTS) ? $this->global->MAIN_DELAY_EXPENSEREPORTS : 0) * 86400;
|
$this->expensereport->approve->warning_delay = (isset($this->global->MAIN_DELAY_EXPENSEREPORTS) ? (int) $this->global->MAIN_DELAY_EXPENSEREPORTS : 0) * 86400;
|
||||||
$this->expensereport->payment = new stdClass();
|
$this->expensereport->payment = new stdClass();
|
||||||
$this->expensereport->payment->warning_delay = (isset($this->global->MAIN_DELAY_EXPENSEREPORTS_TO_PAY) ? $this->global->MAIN_DELAY_EXPENSEREPORTS_TO_PAY : 0) * 86400;
|
$this->expensereport->payment->warning_delay = (isset($this->global->MAIN_DELAY_EXPENSEREPORTS_TO_PAY) ? (int) $this->global->MAIN_DELAY_EXPENSEREPORTS_TO_PAY : 0) * 86400;
|
||||||
}
|
}
|
||||||
if (isset($this->holiday)) {
|
if (isset($this->holiday)) {
|
||||||
$this->holiday->approve = new stdClass();
|
$this->holiday->approve = new stdClass();
|
||||||
$this->holiday->approve->warning_delay = (isset($this->global->MAIN_DELAY_HOLIDAYS) ? $this->global->MAIN_DELAY_HOLIDAYS : 0) * 86400;
|
$this->holiday->approve->warning_delay = (isset($this->global->MAIN_DELAY_HOLIDAYS) ? (int) $this->global->MAIN_DELAY_HOLIDAYS : 0) * 86400;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($this->global->PRODUIT_MULTIPRICES) && empty($this->global->PRODUIT_MULTIPRICES_LIMIT)) {
|
if (!empty($this->global->PRODUIT_MULTIPRICES) && empty($this->global->PRODUIT_MULTIPRICES_LIMIT)) {
|
||||||
|
|||||||
@ -231,7 +231,7 @@ class SMTPs
|
|||||||
private $_errorsTo = '';
|
private $_errorsTo = '';
|
||||||
private $_deliveryReceipt = 0;
|
private $_deliveryReceipt = 0;
|
||||||
private $_trackId = '';
|
private $_trackId = '';
|
||||||
private $_moreInHeader = '';
|
private $_moreinheader = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An array of options for stream_context_create()
|
* An array of options for stream_context_create()
|
||||||
@ -1267,7 +1267,7 @@ class SMTPs
|
|||||||
$_RCPT_list = array();
|
$_RCPT_list = array();
|
||||||
// walk down Recipients array and pull just email addresses
|
// walk down Recipients array and pull just email addresses
|
||||||
foreach ($this->_msgRecipients as $_host => $_list) {
|
foreach ($this->_msgRecipients as $_host => $_list) {
|
||||||
if ($this->_msgRecipients[$_host][$_which]) {
|
if (!empty($this->_msgRecipients[$_host][$_which])) {
|
||||||
foreach ($this->_msgRecipients[$_host][$_which] as $_addr => $_realName) {
|
foreach ($this->_msgRecipients[$_host][$_which] as $_addr => $_realName) {
|
||||||
if ($_realName) { // @CHANGE LDR
|
if ($_realName) { // @CHANGE LDR
|
||||||
$_realName = '"'.$_realName.'"';
|
$_realName = '"'.$_realName.'"';
|
||||||
|
|||||||
@ -2354,7 +2354,7 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi
|
|||||||
if (method_exists($object, 'getBannerAddress') && !in_array($object->element, array('product', 'bookmark', 'ecm_directories', 'ecm_files'))) {
|
if (method_exists($object, 'getBannerAddress') && !in_array($object->element, array('product', 'bookmark', 'ecm_directories', 'ecm_files'))) {
|
||||||
$moreaddress = $object->getBannerAddress('refaddress', $object);
|
$moreaddress = $object->getBannerAddress('refaddress', $object);
|
||||||
if ($moreaddress) {
|
if ($moreaddress) {
|
||||||
$morehtmlref .= '<div class="refidno">';
|
$morehtmlref .= '<div class="refidno refaddress">';
|
||||||
$morehtmlref .= $moreaddress;
|
$morehtmlref .= $moreaddress;
|
||||||
$morehtmlref .= '</div>';
|
$morehtmlref .= '</div>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -179,6 +179,9 @@ function dolDecrypt($chain, $key = '')
|
|||||||
if (preg_match('/^dolcrypt:([^:]+):(.+)$/', $chain, $reg)) {
|
if (preg_match('/^dolcrypt:([^:]+):(.+)$/', $chain, $reg)) {
|
||||||
$ciphering = $reg[1];
|
$ciphering = $reg[1];
|
||||||
if (function_exists('openssl_decrypt')) {
|
if (function_exists('openssl_decrypt')) {
|
||||||
|
if (empty($key)) {
|
||||||
|
return 'Error dolDecrypt decrypt key is empty';
|
||||||
|
}
|
||||||
$tmpexplode = explode(':', $reg[2]);
|
$tmpexplode = explode(':', $reg[2]);
|
||||||
if (!empty($tmpexplode[1]) && is_string($tmpexplode[0])) {
|
if (!empty($tmpexplode[1]) && is_string($tmpexplode[0])) {
|
||||||
$newchain = openssl_decrypt($tmpexplode[1], $ciphering, $key, 0, $tmpexplode[0]);
|
$newchain = openssl_decrypt($tmpexplode[1], $ciphering, $key, 0, $tmpexplode[0]);
|
||||||
@ -186,7 +189,7 @@ function dolDecrypt($chain, $key = '')
|
|||||||
$newchain = openssl_decrypt($tmpexplode[0], $ciphering, $key, 0, null);
|
$newchain = openssl_decrypt($tmpexplode[0], $ciphering, $key, 0, null);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$newchain = 'Error function openssl_decrypt() not available';
|
$newchain = 'Error dolDecrypt function openssl_decrypt() not available';
|
||||||
}
|
}
|
||||||
return $newchain;
|
return $newchain;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -903,9 +903,8 @@ if ($ok && GETPOST('clean_product_stock_batch', 'alpha')) {
|
|||||||
$sql = "SELECT p.rowid, p.ref, p.tobatch, ps.rowid as psrowid, ps.fk_entrepot, ps.reel, SUM(pb.qty) as reelbatch";
|
$sql = "SELECT p.rowid, p.ref, p.tobatch, ps.rowid as psrowid, ps.fk_entrepot, ps.reel, SUM(pb.qty) as reelbatch";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."product as p, ".MAIN_DB_PREFIX."product_stock as ps LEFT JOIN ".MAIN_DB_PREFIX."product_batch as pb ON ps.rowid = pb.fk_product_stock";
|
$sql .= " FROM ".MAIN_DB_PREFIX."product as p, ".MAIN_DB_PREFIX."product_stock as ps LEFT JOIN ".MAIN_DB_PREFIX."product_batch as pb ON ps.rowid = pb.fk_product_stock";
|
||||||
$sql .= " WHERE p.rowid = ps.fk_product";
|
$sql .= " WHERE p.rowid = ps.fk_product";
|
||||||
$sql .= " AND p.tobatch > 0";
|
|
||||||
$sql .= " GROUP BY p.rowid, p.ref, p.tobatch, ps.rowid, ps.fk_entrepot, ps.reel";
|
$sql .= " GROUP BY p.rowid, p.ref, p.tobatch, ps.rowid, ps.fk_entrepot, ps.reel";
|
||||||
$sql .= " HAVING reel != SUM(pb.qty) or SUM(pb.qty) IS NULL";
|
$sql .= " HAVING (SUM(pb.qty) IS NOT NULL AND reel != SUM(pb.qty)) OR (SUM(pb.qty) IS NULL AND p.tobatch > 0)";
|
||||||
print $sql;
|
print $sql;
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
@ -915,53 +914,73 @@ if ($ok && GETPOST('clean_product_stock_batch', 'alpha')) {
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < $num) {
|
while ($i < $num) {
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
print '<tr><td>Product '.$obj->rowid.'-'.$obj->ref.' in warehouse '.$obj->fk_entrepot.' (product_stock id '.$obj->psrowid.'): '.$obj->reel.' (Stock product_stock.reel) != '.($obj->reelbatch ? $obj->reelbatch : '0').' (Stock batch sum product_batch)';
|
print '<tr><td>Product '.$obj->rowid.'-'.$obj->ref.' in warehouse id='.$obj->fk_entrepot.' (product_stock.id='.$obj->psrowid.'): '.$obj->reel.' (Stock product_stock.reel) != '.($obj->reelbatch ? $obj->reelbatch : '0').' (Stock batch sum product_batch)';
|
||||||
|
|
||||||
// Fix
|
// Fix is required
|
||||||
if ($obj->reel != $obj->reelbatch) {
|
if ($obj->reel != $obj->reelbatch) {
|
||||||
if ($methodtofix == 'updatebatch') {
|
if (empty($obj->tobatch)) {
|
||||||
// Method 1
|
// If product is not a product that support batches, we can clean stock by deleting the product batch lines
|
||||||
print ' -> Insert qty '.($obj->reel - $obj->reelbatch).' with lot 000000 linked to fk_product_stock='.$obj->psrowid;
|
print ' -> Delete qty '.$obj->reelbatch.' for any lot linked to fk_product_stock='.$obj->psrowid;
|
||||||
|
$sql2 = "DELETE FROM ".MAIN_DB_PREFIX."product_batch";
|
||||||
|
$sql2 .= " WHERE fk_product_stock = ".((int) $obj->psrowid);
|
||||||
|
print '<br>'.$sql2;
|
||||||
|
|
||||||
if (GETPOST('clean_product_stock_batch') == 'confirmed') {
|
if (GETPOST('clean_product_stock_batch') == 'confirmed') {
|
||||||
$sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_batch(fk_product_stock, batch, qty)";
|
|
||||||
$sql2 .= "VALUES(".$obj->psrowid.", '000000', ".($obj->reel - $obj->reelbatch).")";
|
|
||||||
$resql2 = $db->query($sql2);
|
$resql2 = $db->query($sql2);
|
||||||
if (!$resql2) {
|
if (!$resql2) {
|
||||||
// TODO If it fails, we must make update
|
|
||||||
//$sql2 ="UPDATE ".MAIN_DB_PREFIX."product_batch";
|
|
||||||
//$sql2.=" SET ".$obj->psrowid.", '000000', ".($obj->reel - $obj->reelbatch).")";
|
|
||||||
//$sql2.=" WHERE fk_product_stock = ".((int) $obj->psrowid)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($methodtofix == 'updatestock') {
|
|
||||||
// Method 2
|
|
||||||
print ' -> Update qty of product_stock with qty = '.($obj->reelbatch ? ((float) $obj->reelbatch) : '0').' for ps.rowid = '.((int) $obj->psrowid);
|
|
||||||
if (GETPOST('clean_product_stock_batch') == 'confirmed') {
|
|
||||||
$error = 0;
|
|
||||||
|
|
||||||
$db->begin();
|
|
||||||
|
|
||||||
$sql2 = "UPDATE ".MAIN_DB_PREFIX."product_stock";
|
|
||||||
$sql2 .= " SET reel = ".($obj->reelbatch ? ((float) $obj->reelbatch) : '0')." WHERE rowid = ".((int) $obj->psrowid);
|
|
||||||
$resql2 = $db->query($sql2);
|
|
||||||
if ($resql2) {
|
|
||||||
// We update product_stock, so we must fill p.stock into product too.
|
|
||||||
$sql3 = 'UPDATE '.MAIN_DB_PREFIX.'product p SET p.stock= (SELECT SUM(ps.reel) FROM '.MAIN_DB_PREFIX.'product_stock ps WHERE ps.fk_product = p.rowid)';
|
|
||||||
$resql3 = $db->query($sql3);
|
|
||||||
if (!$resql3) {
|
|
||||||
$error++;
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($methodtofix == 'updatebatch') {
|
||||||
|
// Method 1
|
||||||
|
print ' -> Insert qty '.($obj->reel - $obj->reelbatch).' with lot 000000 linked to fk_product_stock='.$obj->psrowid;
|
||||||
|
$sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_batch(fk_product_stock, batch, qty)";
|
||||||
|
$sql2 .= "VALUES(".((int) $obj->psrowid).", '000000', ".((float) ($obj->reel - $obj->reelbatch)).")";
|
||||||
|
print '<br>'.$sql2;
|
||||||
|
|
||||||
if (!$error) {
|
if (GETPOST('clean_product_stock_batch') == 'confirmed') {
|
||||||
$db->commit();
|
$resql2 = $db->query($sql2);
|
||||||
} else {
|
if (!$resql2) {
|
||||||
$db->rollback();
|
// TODO If it fails, we must make update
|
||||||
|
//$sql2 ="UPDATE ".MAIN_DB_PREFIX."product_batch";
|
||||||
|
//$sql2.=" SET ".$obj->psrowid.", '000000', ".($obj->reel - $obj->reelbatch).")";
|
||||||
|
//$sql2.=" WHERE fk_product_stock = ".((int) $obj->psrowid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($methodtofix == 'updatestock') {
|
||||||
|
// Method 2
|
||||||
|
print ' -> Update qty of product_stock with qty = '.($obj->reelbatch ? ((float) $obj->reelbatch) : '0').' for ps.rowid = '.((int) $obj->psrowid);
|
||||||
|
$sql2 = "UPDATE ".MAIN_DB_PREFIX."product_stock";
|
||||||
|
$sql2 .= " SET reel = ".($obj->reelbatch ? ((float) $obj->reelbatch) : '0')." WHERE rowid = ".((int) $obj->psrowid);
|
||||||
|
print '<br>'.$sql2;
|
||||||
|
|
||||||
|
if (GETPOST('clean_product_stock_batch') == 'confirmed') {
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
|
$db->begin();
|
||||||
|
|
||||||
|
$resql2 = $db->query($sql2);
|
||||||
|
if ($resql2) {
|
||||||
|
// We update product_stock, so we must fill p.stock into product too.
|
||||||
|
$sql3 = 'UPDATE '.MAIN_DB_PREFIX.'product p SET p.stock= (SELECT SUM(ps.reel) FROM '.MAIN_DB_PREFIX.'product_stock ps WHERE ps.fk_product = p.rowid)';
|
||||||
|
$resql3 = $db->query($sql3);
|
||||||
|
if (!$resql3) {
|
||||||
|
$error++;
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$error++;
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
$db->commit();
|
||||||
|
} else {
|
||||||
|
$db->rollback();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -308,7 +308,7 @@ ErrorExistingPermission = Permission <b>%s</b> for object <b>%s</b> already exis
|
|||||||
ErrorFieldExist=The value for <b>%s</b> already exist
|
ErrorFieldExist=The value for <b>%s</b> already exist
|
||||||
ErrorEqualModule=Module invalid in <b>%s</b>
|
ErrorEqualModule=Module invalid in <b>%s</b>
|
||||||
ErrorFieldValue=Value for <b>%s</b> is incorrect
|
ErrorFieldValue=Value for <b>%s</b> is incorrect
|
||||||
ErrorCoherenceMenu=<b>%s</b> is required when <b>%</b> equal LEFT
|
ErrorCoherenceMenu=<b>%s</b> is required when <b>%s</b> is 'left'
|
||||||
|
|
||||||
# Warnings
|
# Warnings
|
||||||
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup.
|
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup.
|
||||||
|
|||||||
@ -50,7 +50,7 @@ UseDateWithoutHourOnFichinter=Hides hours and minutes off the date field for int
|
|||||||
InterventionStatistics=Statistics of interventions
|
InterventionStatistics=Statistics of interventions
|
||||||
NbOfinterventions=No. of intervention cards
|
NbOfinterventions=No. of intervention cards
|
||||||
NumberOfInterventionsByMonth=No. of intervention cards by month (date of validation)
|
NumberOfInterventionsByMonth=No. of intervention cards by month (date of validation)
|
||||||
AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). Add option PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT to 1 into home-setup-other to include them.
|
AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). You can use PROJECT_ELEMENTS_FOR_ADD_MARGIN and PROJECT_ELEMENTS_FOR_MINUS_MARGIN option into home-setup-other to complete list of element included into profit.
|
||||||
InterId=Intervention id
|
InterId=Intervention id
|
||||||
InterRef=Intervention ref.
|
InterRef=Intervention ref.
|
||||||
InterDateCreation=Date creation intervention
|
InterDateCreation=Date creation intervention
|
||||||
|
|||||||
@ -116,7 +116,7 @@ class Partnership extends CommonObject
|
|||||||
'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,),
|
'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,),
|
||||||
'date_partnership_start' => array('type'=>'date', 'label'=>'DatePartnershipStart', 'enabled'=>'1', 'position'=>52, 'notnull'=>1, 'visible'=>1,),
|
'date_partnership_start' => array('type'=>'date', 'label'=>'DatePartnershipStart', 'enabled'=>'1', 'position'=>52, 'notnull'=>1, 'visible'=>1,),
|
||||||
'date_partnership_end' => array('type'=>'date', 'label'=>'DatePartnershipEnd', 'enabled'=>'1', 'position'=>53, 'notnull'=>0, 'visible'=>1,),
|
'date_partnership_end' => array('type'=>'date', 'label'=>'DatePartnershipEnd', 'enabled'=>'1', 'position'=>53, 'notnull'=>0, 'visible'=>1,),
|
||||||
'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>0, 'visible'=>2, 'default'=>'0', 'index'=>1, 'arrayofkeyval'=>array('-1'=>'', '0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '8'=>'Suspended', '9'=>'Terminated'),),
|
'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>1, 'visible'=>2, 'default'=>'0', 'index'=>1, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '8'=>'Suspended', '9'=>'Terminated'),),
|
||||||
'url_to_check' => array('type'=>'varchar(255)', 'label'=>'UrlToCheck', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>-1,),
|
'url_to_check' => array('type'=>'varchar(255)', 'label'=>'UrlToCheck', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>-1,),
|
||||||
'count_last_url_check_error' => array('type'=>'integer', 'label'=>'CountLastUrlCheckError', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>-2, 'default'=>'0',),
|
'count_last_url_check_error' => array('type'=>'integer', 'label'=>'CountLastUrlCheckError', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>-2, 'default'=>'0',),
|
||||||
'last_check_backlink' => array('type'=>'datetime', 'label'=>'LastCheckBacklink', 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>-2,),
|
'last_check_backlink' => array('type'=>'datetime', 'label'=>'LastCheckBacklink', 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>-2,),
|
||||||
|
|||||||
@ -1277,7 +1277,7 @@ if (!empty($arrayfields['p.stock']['checked'])) {
|
|||||||
print_liste_field_titre($arrayfields['p.stock']['label'], $_SERVER["PHP_SELF"], "p.stock", "", $param, '', $sortfield, $sortorder, 'right ');
|
print_liste_field_titre($arrayfields['p.stock']['label'], $_SERVER["PHP_SELF"], "p.stock", "", $param, '', $sortfield, $sortorder, 'right ');
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['stock_virtual']['checked'])) {
|
if (!empty($arrayfields['stock_virtual']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['stock_virtual']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right ');
|
print_liste_field_titre($arrayfields['stock_virtual']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right ', 'VirtualStockDesc');
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['p.tobatch']['checked'])) {
|
if (!empty($arrayfields['p.tobatch']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['p.tobatch']['label'], $_SERVER["PHP_SELF"], "p.tobatch", "", $param, '', $sortfield, $sortorder, 'center ');
|
print_liste_field_titre($arrayfields['p.tobatch']['label'], $_SERVER["PHP_SELF"], "p.tobatch", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
@ -1854,7 +1854,7 @@ while ($i < $imaxinloop) {
|
|||||||
}
|
}
|
||||||
if ($usercancreadprice) {
|
if ($usercancreadprice) {
|
||||||
if ($product_static->stock_reel < 0) { print '<span class="warning">'; }
|
if ($product_static->stock_reel < 0) { print '<span class="warning">'; }
|
||||||
print price(price2num($product_static->stock_reel, 'MS'));
|
print price(price2num($product_static->stock_reel, 'MS'), 0, $langs, 1, 0);
|
||||||
if ($product_static->stock_reel < 0) { print '</span>'; }
|
if ($product_static->stock_reel < 0) { print '</span>'; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1872,7 +1872,7 @@ while ($i < $imaxinloop) {
|
|||||||
}
|
}
|
||||||
if ($usercancreadprice) {
|
if ($usercancreadprice) {
|
||||||
if ($product_static->stock_theorique < 0) { print '<span class="warning">'; }
|
if ($product_static->stock_theorique < 0) { print '<span class="warning">'; }
|
||||||
print price(price2num($product_static->stock_theorique, 'MS'));
|
print price(price2num($product_static->stock_theorique, 'MS'), 0, $langs, 1, 0);
|
||||||
if ($product_static->stock_theorique < 0) { print '</span>'; }
|
if ($product_static->stock_theorique < 0) { print '</span>'; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -493,7 +493,7 @@ if ($resql) {
|
|||||||
print img_warning($langs->trans("StockLowerThanLimit", $objp->seuil_stock_alerte)).' ';
|
print img_warning($langs->trans("StockLowerThanLimit", $objp->seuil_stock_alerte)).' ';
|
||||||
}
|
}
|
||||||
if ($objp->stock_physique < 0) { print '<span class="warning">'; }
|
if ($objp->stock_physique < 0) { print '<span class="warning">'; }
|
||||||
print price2num($objp->stock_physique, 'MS');
|
print price(price2num($objp->stock_physique, 'MS'), 0, $langs, 1, 0);
|
||||||
if ($objp->stock_physique < 0) { print '</span>'; }
|
if ($objp->stock_physique < 0) { print '</span>'; }
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
@ -502,7 +502,7 @@ if ($resql) {
|
|||||||
if ($nb_warehouse > 1) {
|
if ($nb_warehouse > 1) {
|
||||||
foreach ($warehouses_list as &$wh) {
|
foreach ($warehouses_list as &$wh) {
|
||||||
print '<td class="right">';
|
print '<td class="right">';
|
||||||
print empty($product->stock_warehouse[$wh['id']]->real) ? '0' : $product->stock_warehouse[$wh['id']]->real;
|
print price(empty($product->stock_warehouse[$wh['id']]->real) ? 0 : $product->stock_warehouse[$wh['id']]->real, 0, $langs, 1, 0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -511,11 +511,11 @@ if ($resql) {
|
|||||||
// Virtual stock
|
// Virtual stock
|
||||||
if ($virtualdiffersfromphysical) {
|
if ($virtualdiffersfromphysical) {
|
||||||
print '<td class="right">';
|
print '<td class="right">';
|
||||||
if ($objp->seuil_stock_alerte != '' && ($product->stock_theorique < $objp->seuil_stock_alerte)) {
|
if ($objp->seuil_stock_alerte != '' && ($product->stock_theorique < (float) $objp->seuil_stock_alerte)) {
|
||||||
print img_warning($langs->trans("StockLowerThanLimit", $objp->seuil_stock_alerte)).' ';
|
print img_warning($langs->trans("StockLowerThanLimit", $objp->seuil_stock_alerte)).' ';
|
||||||
}
|
}
|
||||||
if ($objp->stock_physique < 0) { print '<span class="warning">'; }
|
if ($objp->stock_physique < 0) { print '<span class="warning">'; }
|
||||||
print price2num($product->stock_theorique, 'MS');
|
print price2num($product->stock_theorique, 'MS', 0, $langs, 1, 0);
|
||||||
if ($objp->stock_physique < 0) { print '</span>'; }
|
if ($objp->stock_physique < 0) { print '</span>'; }
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -475,7 +475,7 @@ $listofreferent = array(
|
|||||||
'table'=>'fichinter',
|
'table'=>'fichinter',
|
||||||
'datefieldname'=>'date_valid',
|
'datefieldname'=>'date_valid',
|
||||||
'disableamount'=>0,
|
'disableamount'=>0,
|
||||||
'margin'=>'minus',
|
'margin'=>'',
|
||||||
'urlnew'=>DOL_URL_ROOT.'/fichinter/card.php?action=create&origin=project&originid='.$id.'&socid='.$socid.'&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.$id),
|
'urlnew'=>DOL_URL_ROOT.'/fichinter/card.php?action=create&origin=project&originid='.$id.'&socid='.$socid.'&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.$id),
|
||||||
'lang'=>'interventions',
|
'lang'=>'interventions',
|
||||||
'buttonnew'=>'AddIntervention',
|
'buttonnew'=>'AddIntervention',
|
||||||
@ -585,9 +585,9 @@ $listofreferent = array(
|
|||||||
'name'=>"MouvementStockAssociated",
|
'name'=>"MouvementStockAssociated",
|
||||||
'title'=>"ListMouvementStockProject",
|
'title'=>"ListMouvementStockProject",
|
||||||
'class'=>'MouvementStock',
|
'class'=>'MouvementStock',
|
||||||
'margin'=>'minus',
|
|
||||||
'table'=>'stock_mouvement',
|
'table'=>'stock_mouvement',
|
||||||
'datefieldname'=>'datem',
|
'datefieldname'=>'datem',
|
||||||
|
'margin'=>'minus',
|
||||||
'disableamount'=>0,
|
'disableamount'=>0,
|
||||||
'test'=>!empty($conf->stock->enabled) && $user->hasRight('stock', 'mouvement', 'lire') && !empty($conf->global->STOCK_MOVEMENT_INTO_PROJECT_OVERVIEW)),
|
'test'=>!empty($conf->stock->enabled) && $user->hasRight('stock', 'mouvement', 'lire') && !empty($conf->global->STOCK_MOVEMENT_INTO_PROJECT_OVERVIEW)),
|
||||||
'salaries'=>array(
|
'salaries'=>array(
|
||||||
@ -752,6 +752,7 @@ $total_revenue_ht = 0;
|
|||||||
$balance_ht = 0;
|
$balance_ht = 0;
|
||||||
$balance_ttc = 0;
|
$balance_ttc = 0;
|
||||||
|
|
||||||
|
// Loop on each element type (proposal, sale order, invoices, ...)
|
||||||
foreach ($listofreferent as $key => $value) {
|
foreach ($listofreferent as $key => $value) {
|
||||||
$parameters = array(
|
$parameters = array(
|
||||||
'total_revenue_ht' =>& $total_revenue_ht,
|
'total_revenue_ht' =>& $total_revenue_ht,
|
||||||
@ -787,6 +788,7 @@ foreach ($listofreferent as $key => $value) {
|
|||||||
$total_ht = 0;
|
$total_ht = 0;
|
||||||
$total_ttc = 0;
|
$total_ttc = 0;
|
||||||
|
|
||||||
|
// Loop on each object for the current element type
|
||||||
$num = count($elementarray);
|
$num = count($elementarray);
|
||||||
for ($i = 0; $i < $num; $i++) {
|
for ($i = 0; $i < $num; $i++) {
|
||||||
$tmp = explode('_', $elementarray[$i]);
|
$tmp = explode('_', $elementarray[$i]);
|
||||||
@ -871,7 +873,7 @@ foreach ($listofreferent as $key => $value) {
|
|||||||
$defaultvat = get_default_tva($mysoc, $mysoc);
|
$defaultvat = get_default_tva($mysoc, $mysoc);
|
||||||
$total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)), 'MT');
|
$total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)), 'MT');
|
||||||
} elseif ($key == 'loan') {
|
} elseif ($key == 'loan') {
|
||||||
$total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr
|
$total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr
|
||||||
} else {
|
} else {
|
||||||
$total_ttc_by_line = $element->total_ttc;
|
$total_ttc_by_line = $element->total_ttc;
|
||||||
}
|
}
|
||||||
@ -892,19 +894,14 @@ foreach ($listofreferent as $key => $value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Each element with at least one line is output
|
// Each element with at least one line is output
|
||||||
$qualifiedforfinalprofit = true;
|
|
||||||
if ($key == 'intervention' && empty($conf->global->PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT)) {
|
|
||||||
$qualifiedforfinalprofit = false;
|
|
||||||
}
|
|
||||||
//var_dump($key.' '.$qualifiedforfinalprofit);
|
|
||||||
|
|
||||||
// Calculate margin
|
// Calculate margin
|
||||||
if ($qualifiedforfinalprofit) {
|
if ($margin) {
|
||||||
if ($margin == 'add') {
|
if ($margin === 'add') {
|
||||||
$total_revenue_ht += $total_ht;
|
$total_revenue_ht += $total_ht;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($margin != "add") { // Revert sign
|
if ($margin === "minus") { // Revert sign
|
||||||
$total_ht = -$total_ht;
|
$total_ht = -$total_ht;
|
||||||
$total_ttc = -$total_ttc;
|
$total_ttc = -$total_ttc;
|
||||||
}
|
}
|
||||||
@ -920,24 +917,24 @@ foreach ($listofreferent as $key => $value) {
|
|||||||
print '<td class="right">'.$i.'</td>';
|
print '<td class="right">'.$i.'</td>';
|
||||||
// Amount HT
|
// Amount HT
|
||||||
print '<td class="right">';
|
print '<td class="right">';
|
||||||
if ($key == 'intervention' && !$qualifiedforfinalprofit) {
|
if ($key == 'intervention' && !$margin) {
|
||||||
print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).'</span>';
|
print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).'</span>';
|
||||||
} else {
|
} else {
|
||||||
print price($total_ht);
|
|
||||||
if ($key == 'propal') {
|
if ($key == 'propal') {
|
||||||
print '<span class="opacitymedium">'.$form->textwithpicto('', $langs->trans("SignedOnly")).'</span>';
|
print '<span class="opacitymedium">'.$form->textwithpicto('', $langs->trans("SignedOnly")).'</span>';
|
||||||
}
|
}
|
||||||
|
print price($total_ht);
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
// Amount TTC
|
// Amount TTC
|
||||||
print '<td class="right">';
|
print '<td class="right">';
|
||||||
if ($key == 'intervention' && !$qualifiedforfinalprofit) {
|
if ($key == 'intervention' && !$margin) {
|
||||||
print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).'</span>';
|
print '<span class="opacitymedium">'.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).'</span>';
|
||||||
} else {
|
} else {
|
||||||
print price($total_ttc);
|
|
||||||
if ($key == 'propal') {
|
if ($key == 'propal') {
|
||||||
print '<span class="opacitymedium">'.$form->textwithpicto('', $langs->trans("SignedOnly")).'</span>';
|
print '<span class="opacitymedium">'.$form->textwithpicto('', $langs->trans("SignedOnly")).'</span>';
|
||||||
}
|
}
|
||||||
|
print price($total_ttc);
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|||||||
@ -3983,6 +3983,10 @@ div.refidno {
|
|||||||
font-size: <?php print is_numeric($fontsize) ? $fontsize.'px' : $fontsize ?>;
|
font-size: <?php print is_numeric($fontsize) ? $fontsize.'px' : $fontsize ?>;
|
||||||
line-height: 1.4em;
|
line-height: 1.4em;
|
||||||
}
|
}
|
||||||
|
div.refaddress div.address {
|
||||||
|
line-height: 1.2em;
|
||||||
|
font-size: 0.95em;
|
||||||
|
}
|
||||||
div.refidno form {
|
div.refidno form {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4062,7 +4062,7 @@ div.refidpadding {
|
|||||||
div.refid {
|
div.refid {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: var(--colortexttitlenotab);
|
color: var(--colortexttitlenotab);
|
||||||
font-size: 160%;
|
font-size: 120%;
|
||||||
}
|
}
|
||||||
a.refid {
|
a.refid {
|
||||||
color: var(--colortexttitlenotab) !important;
|
color: var(--colortexttitlenotab) !important;
|
||||||
@ -4072,11 +4072,15 @@ div.refidno {
|
|||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: var(--refidnocolor);
|
color: var(--refidnocolor);
|
||||||
font-size: <?php print is_numeric($fontsize) ? $fontsize.'px' : $fontsize ?>;
|
font-size: <?php print is_numeric($fontsize) ? $fontsize.'px' : $fontsize ?>;
|
||||||
line-height: 21px;
|
line-height: 1.3em;
|
||||||
}
|
}
|
||||||
div.refidno form {
|
div.refidno form {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
div.refaddress div.address {
|
||||||
|
line-height: 1.2em;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
div.pagination {
|
div.pagination {
|
||||||
float: right;
|
float: right;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user