diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php
index 351ab9212bc..933f6534d55 100644
--- a/htdocs/comm/action/card.php
+++ b/htdocs/comm/action/card.php
@@ -1031,7 +1031,7 @@ if ($action == 'create') {
// Recurring event
$userepeatevent = ($conf->global->MAIN_FEATURES_LEVEL == 2 ? 1 : 0);
- if ($userepeatevent) {
+ if ($userepeatevent && !empty($object->recurid)) {
// Repeat
//print '
| ';
print ' ';
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 22505f6b921..1e6a33e8ae8 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -1609,7 +1609,7 @@ if ($action == 'create' && $usercancreate) {
$fk_account = $soc->fk_account;
$availability_id = 0;
$shipping_method_id = $soc->shipping_method_id;
- $warehouse_id = $soc->warehouse_id;
+ $warehouse_id = $soc->fk_warehouse;
$demand_reason_id = $soc->demand_reason_id;
$remise_percent = $soc->remise_percent;
$remise_absolue = 0;
@@ -1698,7 +1698,7 @@ if ($action == 'create' && $usercancreate) {
// Contacts (ask contact only if thirdparty already defined).
print " |
| ".$langs->trans("DefaultContact").' | ';
print img_picto('', 'contact', 'class="pictofixedwidth"');
- print $form->selectcontacts($soc->id, $contactid, 'contactid', 1, $srccontactslist, '', 1, 'maxwidth200 widthcentpercentminusx');
+ print $form->selectcontacts($soc->id, $contactid, 'contactid', 1, !empty($srccontactslist)?$srccontactslist:"", '', 1, 'maxwidth200 widthcentpercentminusx');
print ' |
';
// Ligne info remises tiers
@@ -1722,7 +1722,7 @@ if ($action == 'create' && $usercancreate) {
// Date delivery planned
print '| '.$langs->trans("DateDeliveryPlanned").' | ';
print '';
- $date_delivery = ($date_delivery ? $date_delivery : $object->date_delivery);
+ $date_delivery = ($date_delivery ? $date_delivery : $object->delivery_date);
print $form->selectDate($date_delivery ? $date_delivery : -1, 'liv_', 1, 1, 1);
print " | \n";
print '
';
@@ -1803,7 +1803,12 @@ if ($action == 'create' && $usercancreate) {
}
// Other attributes
- $parameters = array('objectsrc' => $objectsrc, 'socid'=>$socid);
+ $parameters = array();
+ if (!empty($origin) && !empty($originid) && is_object($objectsrc)) {
+ $parameters['objectsrc'] = $objectsrc;
+ }
+ $parameters['socid'] = $socid;
+
// Note that $action and $object may be modified by hook
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action);
print $hookmanager->resPrint;
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 0742e3d4851..843fa305600 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -3282,6 +3282,25 @@ class Facture extends CommonInvoice
}
}
+ /*
+ * Set situation_final to 0 if is a credit note and the invoice source is a invoice situation (case when invoice situation is at 100%)
+ * So we can continue to create new invoice situation
+ */
+ if (!$error && $this->type == self::TYPE_CREDIT_NOTE && $this->fk_facture_source > 0) {
+ $invoice_situation = new Facture($this->db);
+ $result = $invoice_situation->fetch($this->fk_facture_source);
+ if ($result > 0 && $invoice_situation->type == self::TYPE_SITUATION && $invoice_situation->situation_final == 1) {
+ $invoice_situation->situation_final = 0;
+ // Disable triggers because module can force situation_final to 1 by triggers (ex: SubTotal)
+ $result = $invoice_situation->setFinal($user, 1);
+ }
+ if ($result < 0) {
+ $this->error = $invoice_situation->error;
+ $this->errors = $invoice_situation->errors;
+ $error++;
+ }
+ }
+
// Trigger calls
if (!$error && !$notrigger) {
// Call trigger
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index a6d29aa6fab..8a2d093448c 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -4986,7 +4986,7 @@ abstract class CommonObject
}
$text .= ' - '.(!empty($line->label) ? $line->label : $label);
- $description .= (!empty($conf->global->PRODUIT_DESC_IN_FORM) ? '' : dol_htmlentitiesbr($line->description)); // Description is what to show on popup. We shown nothing if already into desc.
+ $description .= (!empty($conf->global->PRODUIT_DESC_IN_FORM) ? '' : (!empty($line->description) ? dol_htmlentitiesbr($line->description) : '')); // Description is what to show on popup. We shown nothing if already into desc.
}
$line->pu_ttc = price2num((!empty($line->subprice) ? $line->subprice : 0) * (1 + ((!empty($line->tva_tx) ? $line->tva_tx : 0) / 100)), 'MU');
@@ -7495,33 +7495,35 @@ abstract class CommonObject
$resql = $this->db->query($sql);
if ($resql) {
$value = ''; // value was used, so now we reste it to use it to build final output
+ $numrows = $this->db->num_rows($resql);
+ if ($numrows) {
+ $obj = $this->db->fetch_object($resql);
- $obj = $this->db->fetch_object($resql);
+ // Several field into label (eq table:code|libelle:rowid)
+ $fields_label = explode('|', $InfoFieldList[1]);
- // Several field into label (eq table:code|libelle:rowid)
- $fields_label = explode('|', $InfoFieldList[1]);
-
- if (is_array($fields_label) && count($fields_label) > 1) {
- foreach ($fields_label as $field_toshow) {
- $translabel = '';
- if (!empty($obj->$field_toshow)) {
- $translabel = $langs->trans($obj->$field_toshow);
+ if (is_array($fields_label) && count($fields_label) > 1) {
+ foreach ($fields_label as $field_toshow) {
+ $translabel = '';
+ if (!empty($obj->$field_toshow)) {
+ $translabel = $langs->trans($obj->$field_toshow);
+ }
+ if ($translabel != $field_toshow) {
+ $value .= dol_trunc($translabel, 18).' ';
+ } else {
+ $value .= $obj->$field_toshow.' ';
+ }
}
- if ($translabel != $field_toshow) {
- $value .= dol_trunc($translabel, 18).' ';
- } else {
- $value .= $obj->$field_toshow.' ';
- }
- }
- } else {
- $translabel = '';
- if (!empty($obj->{$InfoFieldList[1]})) {
- $translabel = $langs->trans($obj->{$InfoFieldList[1]});
- }
- if ($translabel != $obj->{$InfoFieldList[1]}) {
- $value = dol_trunc($translabel, 18);
} else {
- $value = $obj->{$InfoFieldList[1]};
+ $translabel = '';
+ if (!empty($obj->{$InfoFieldList[1]})) {
+ $translabel = $langs->trans($obj->{$InfoFieldList[1]});
+ }
+ if ($translabel != $obj->{$InfoFieldList[1]}) {
+ $value = dol_trunc($translabel, 18);
+ } else {
+ $value = $obj->{$InfoFieldList[1]};
+ }
}
}
} else {
diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php
index 22c4921b5b1..91b92523e11 100644
--- a/htdocs/fourn/commande/list.php
+++ b/htdocs/fourn/commande/list.php
@@ -1122,7 +1122,7 @@ if ($resql) {
$url .= '&socid='.((int) $socid);
$url .= '&backtopage='.urlencode(DOL_URL_ROOT.'/fourn/commande/list.php?socid='.((int) $socid));
}
- $newcardbutton = dolGetButtonTitle($langs->trans('NewSupplierOrderShort'), '', 'fa fa-plus-circle', $url, '', $permissitiontoadd);
+ $newcardbutton = dolGetButtonTitle($langs->trans('NewSupplierOrderShort'), '', 'fa fa-plus-circle', $url, '', $permissiontoadd);
// Lines of title fields
print '';
if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) {
- $param = '&id='.$object->id.'&socid='.$socid;
+ $param = '&id='.$object->id.(!empty($socid) ? '&socid='.$socid : '');
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
$param .= '&contextpage='.urlencode($contextpage);
}