3.2RC - Date limite de règlement

Bonjour.

Depuis le passage en 3.2 RC, impossible de changer à la main la date limite de règlement d’une facture.

La date limite de règlement se positionne automatiquement à une date dépendant de la valeur « Conditions règlement » (plus 30 jours sur la date de facture par rapport si on est en « 30 jours ») au moment de la création de la facture.

Mais il est impossible de valider ensuite une modification de cette date (y compris lorsqu’on n’a pas de « Conditions règlement » sélectionné).

On peut modifier la date (en cliquant sur le bouton idoine puis sans la saisissant à la main ou en utilisant le widget calendrier) mais lorsqu’on clique sur le bouton « Modifier » à droite, la date se remet à celle d’origine…

De plus, si on modifie la « Date » (passage du 30 juin au 30 juillet par exemple), « Date limite règlement » se recalcule immédiatement (en passant là aussi du 30 juin au 30 juillet).
Et si on remet « Date » au 30 juin, « Date limite règlement » reste au 30 juillet.

Bonjour,
cela a été corrigé dans la 3.3 alpha
il faut rajouter le code suivant, dans le fichier compta/facture.php, après la ligne 265 :

else if ($action == 'setpaymentterm' && $user->rights->facture->creer) { $object->fetch($id); $object->date_lim_reglement=dol_mktime(12,0,0,$_POST['paymenttermmonth'],$_POST['paymenttermday'],$_POST['paymenttermyear']); if ($object->date_lim_reglement < $object->date) $object->date_lim_reglement=$object->date; $result=$object->update($user); if ($result < 0) dol_print_error($db,$object->error); }

@+
Philippe

1 « J'aime »

Ligne 266 je crois 8)

merci

1 « J'aime »

Bonjour,

J’ai également fait cette mise à jour.
Maintenant je peux correctement choisir la date mais de façon manuelle.

Si je change les Conditions règlement, la date d’échéance reste la même et ne se change plus automatiquement comme sur l’ancienne version.

Le bug étant (encore) présent dans la version 3.2.2,

en ligne 268, remplacer

else if ($action == ‹ setconditions › && $user->rights->facture->creer)
{
$object->fetch($id);
$result=$object->setPaymentTerms(GETPOST(‹ cond_reglement_id ›,‹ int ›));
if ($result < 0) dol_print_error($db,$object->error);
}

par

else if ($action == ‹ setpaymentterm › && $user->rights->facture->creer)
{
$object->fetch($id);
$object->date_lim_reglement=dol_mktime(12,0,0,$_POST[‹ paymenttermmonth ›],$_POST[‹ paymenttermday ›],$_POST[‹ paymenttermyear ›]);
if ($object->date_lim_reglement < $object->date) $object->date_lim_reglement=$object->date;
$result=$object->update($user);
if ($result < 0) dol_print_error($db,$object->error);
}

else if ($action == ‹ setconditions › && $user->rights->facture->creer)
{
$object->fetch($id);
$result=$object->setPaymentTerms(GETPOST(‹ cond_reglement_id ›,‹ int ›));
if ($result < 0) dol_print_error($db,$object->error);
$object->date_lim_reglement = $object->calculate_date_lim_reglement(GETPOST(‹ cond_reglement_id ›,‹ int ›));
$result=$object->update($user);
if ($result < 0) dol_print_error($db,$object->error);

}

on recalcule la date au changement des conditions en utilisant la méthode de la classe facture (ligne 1310@htdocs/compta/facture/class/facture.class.php )

1 « J'aime »

Merci beaucoup !

Merci ! Ca fonctionne effectivement très bien