From 1d4f17ead634b76be47c2eba3bd8f4d24c9d3c72 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Fri, 29 Mar 2024 11:57:36 +0100 Subject: [PATCH] Correction erreur si pas de prix saisi --- admin/_facture_common.php | 202 +++++++++++++++++++------------------- 1 file changed, 103 insertions(+), 99 deletions(-) diff --git a/admin/_facture_common.php b/admin/_facture_common.php index cedacfa..ecc0c30 100644 --- a/admin/_facture_common.php +++ b/admin/_facture_common.php @@ -34,14 +34,14 @@ $tpl->assign('formes_don', array('1' => 'Acte authentique', '3' => 'Don manuel', '4' => 'Autres')); $tpl->assign('natures_don', array('1' => 'Numéraire', - '2' => 'Chèque', - '3' => 'Virement, CB; ...')); + '2' => 'Chèque', + '3' => 'Virement, CB; ...')); $tpl->assign('textes_don', $facture->listTextesCerfa()); if ( !$target ) { f(['id' => 'required|numeric']); $id = (int) qg('id'); - + if (!$f = $facture->get($id)) { throw new UserException("Ce document n'existe pas."); @@ -52,109 +52,113 @@ if ( !$target ) { $data=[]; $form->runIf(f('save') && !$form->hasErrors(), function () use ($client, &$data, $form) - { - try - { - if ( count(f('designation')) !== count(f('prix')) ) - { - throw new UserException('Nombre de désignations et de prix reçus différent.'); - } + { + try + { + if ( count(f('designation')) !== count(f('prix')) ) + { + throw new UserException('Nombre de désignations et de prix reçus différent.'); + } - $data = [ - 'numero' => f('numero_facture'), - 'date_emission' => f('date_emission'), - 'date_echeance' => f('date_echeance'), - 'reglee' => f('reglee') == 1?1:0, - 'archivee' => f('archivee') == 1?1:0, - 'moyen_paiement' => f('moyen_paiement'), - 'toto' => 0 - ]; - $data['type_facture'] = f('type'); - if (in_array(f('type'), [DEVIS, FACT])) - { - foreach(f('designation') as $k=>$value) - { - $data['contenu'][$k]['designation'] = $value; - $data['contenu'][$k]['prix'] = Utils::moneyToInteger(f('prix')[$k]); - $data['toto'] += Utils::moneyToInteger(f('prix')[$k]); - } - $data['total'] = $data['toto']; - unset($data['toto']); - } - elseif ( f('type') == CERFA ) - { - $data['moyen_paiement'] = f('moyen_paiement_cerfa'); - $data['contenu'] = [ - 'forme' => f('forme_don'), - 'nature' => f('nature_don'), - 'texte' => f('texte_don')]; - $data['total'] = Utils::moneyToInteger(f('total')); - unset($data['toto']); - } - if (f('base_receveur') == 'client') - { - $data['receveur_membre'] = 0; - $data['receveur_id'] = f('client'); - } - elseif (f('base_receveur') == 'membre') - { - $data['receveur_membre'] = 1; - $data['receveur_id'] = f('membre'); - } - else - { - throw new UserException('Vous devez indiquer si le receveur est un client ou un membre'); - } + $data = [ + 'numero' => f('numero_facture'), + 'date_emission' => f('date_emission'), + 'date_echeance' => f('date_echeance'), + 'reglee' => f('reglee') == 1?1:0, + 'archivee' => f('archivee') == 1?1:0, + 'moyen_paiement' => f('moyen_paiement'), + 'toto' => 0 + ]; + $data['type_facture'] = f('type'); + if (in_array(f('type'), [DEVIS, FACT])) + { + foreach(f('designation') as $k=>$value) + { + if ($value != '' && f('prix')[$k] == null) { + throw new UserException('Il manque le prix sur la ligne '. $k+1 . ' !!'); + } - } - catch(UserException $e) - { - $form->addError($e->getMessage()); - } - - }, $csrf_key); + $data['contenu'][$k]['designation'] = $value; + $data['contenu'][$k]['prix'] = Utils::moneyToInteger(f('prix')[$k]); + $data['toto'] += Utils::moneyToInteger(f('prix')[$k]); + } + $data['total'] = $data['toto']; + unset($data['toto']); + } + elseif ( f('type') == CERFA ) + { + $data['moyen_paiement'] = f('moyen_paiement_cerfa'); + $data['contenu'] = [ + 'forme' => f('forme_don'), + 'nature' => f('nature_don'), + 'texte' => f('texte_don')]; + $data['total'] = Utils::moneyToInteger(f('total')); + unset($data['toto']); + } + if (f('base_receveur') == 'client') + { + $data['receveur_membre'] = 0; + $data['receveur_id'] = f('client'); + } + elseif (f('base_receveur') == 'membre') + { + $data['receveur_membre'] = 1; + $data['receveur_id'] = f('membre'); + } + else + { + throw new UserException('Vous devez indiquer si le receveur est un client ou un membre'); + } + + } + catch(UserException $e) + { + $form->addError($e->getMessage()); + } + + }, $csrf_key); $form->runIf(f('select_cotis') && !$form->hasErrors(), function () use ($step) - { - $step = true; - }, 'add_cotis_1'); + { + $step = true; + }, 'add_cotis_1'); $form->runIf(f('add_cotis') && !$form->hasErrors(), function () use ($radio, $fields, $facture, $form) - { - $radio['type'] = f('cotisation'); - try - { - $num = (int) str_replace('cotis_', '', $radio['type']); - foreach($fields as $field) - { - $cotis[$field] = f($field.'_'.$num); - } + { + $radio['type'] = f('cotisation'); + try + { + $num = (int) str_replace('cotis_', '', $radio['type']); + foreach($fields as $field) + { + $cotis[$field] = f($field.'_'.$num); + } - $r = $facture->getCotis(f('membre_cotis'), $cotis['id']); - $r = $r[0]; + $r = $facture->getCotis(f('membre_cotis'), $cotis['id']); + $r = $r[0]; - $data = [ - 'type_facture' => COTIS, - 'numero' => f('numero_facture'), - 'receveur_membre' => 1, - 'receveur_id' => f('membre_cotis'), - 'date_emission' => f('date_emission'), - 'moyen_paiement' => 'AU', - 'total' => $r->paid_amount ?? $r->amount, - 'contenu' => ['id' => $cotis['id'], - 'intitule' => $cotis['label'], - 'souscription' => $cotis['date'], - 'expiration' => $cotis['expiry'] ] - ]; + $data = [ + 'type_facture' => COTIS, + 'numero' => f('numero_facture'), + 'receveur_membre' => 1, + 'receveur_id' => f('membre_cotis'), + 'date_emission' => f('date_emission'), + 'moyen_paiement' => 'AU', + 'total' => $r->paid_amount ?? $r->amount, + 'contenu' => ['id' => $cotis['id'], + 'intitule' => $cotis['label'], + 'souscription' => $cotis['date'], + 'expiration' => $cotis['expiry'] ] + ]; - } - catch (UserException $e) - { - $form->addError($e->getMessage()); - } - }, 'add_cotis_2'); + } + catch (UserException $e) + { + $form->addError($e->getMessage()); + } + }, 'add_cotis_2'); if (! $form->hasErrors()) { @@ -224,12 +228,12 @@ if ($target) elseif (isset($doc['type'])) { $radio['type'] = $doc['type']; } // ... ou par défaut - else + else { $radio['type'] = FACT; } } -else +else { $doc['moyen_paiement'] = $f->moyen_paiement; $doc['type'] = $f->type_facture; @@ -239,7 +243,7 @@ else $doc['client'] = $f->receveur_id; $doc['membre'] = $f->receveur_id; $doc['contenu'] = $f->contenu; - + $doc['date_emission'] = f('date_emission') ?: $f->date_emission; $doc['date_echeance'] = f('date_echeance')?: $f->date_echeance; // Smarty m'a saoulé pour utiliser form_field|date_fr:--- /* modif DD -- CERFA -------------------------------------- */ @@ -249,7 +253,7 @@ else $doc['nature_don'] = $f->contenu['nature']; $doc['texte_don'] = $f->contenu['texte']; } - + $radio['type'] = f('type')??$doc['type']; } $tpl->assign('types_details', $facture->types);