2019-11-02 17:53:27 +01:00
< ? php
namespace Garradin ;
require_once __DIR__ . '/_inc.php' ;
$session -> requireAccess ( 'compta' , Membres :: DROIT_ECRITURE );
use Garradin\DB ;
$cats = new Compta\Categories ;
$tpl -> assign ( 'moyens_paiement' , $cats -> listMoyensPaiement ());
$tpl -> assign ( 'moyen_paiement' , f ( 'moyen_paiement' ) ? : 'ES' );
if ( f ( 'add' ))
{
2019-11-03 17:51:31 +01:00
$form -> check ( 'ajout_facture' , [
2020-10-24 07:28:31 +02:00
'type' => 'required|in:facture,devis,cerfa,cotis' ,
2019-11-03 17:51:31 +01:00
'numero_facture' => 'required|string' ,
'date_emission' => 'required|date' ,
'date_echeance' => 'required|date' ,
// 'reglee' => '',
// 'archivee' => '',
'base_receveur' => 'required|in:membre,client' ,
// 'client' => '',
// 'membre' => '',
'moyen_paiement' => 'required|in:' . implode ( ',' , array_keys ( $cats -> listMoyensPaiement ())),
'designation' => 'array|required' ,
'prix' => 'array|required'
]);
if ( ! $form -> hasErrors ())
{
try
{
if ( count ( f ( 'designation' )) !== count ( f ( 'prix' )) )
{
throw new UserException ( 'Nombre de désignations et de prix reçus différent.' );
}
$truc = [
'numero' => f ( 'numero_facture' ),
'date_emission' => f ( 'date_emission' ),
'date_echeance' => f ( 'date_echeance' ),
'reglee' => f ( 'reglee' ) == 'on' ? 1 : 0 ,
'archivee' => f ( 'archivee' ) == 'on' ? 1 : 0 ,
'moyen_paiement' => f ( 'moyen_paiement' ),
'toto' => 0
];
2020-10-24 07:28:31 +02:00
if ( f ( 'type' ) == 'devis' )
{
$truc [ 'type_facture' ] = 0 ;
}
elseif ( f ( 'type' ) == 'facture' )
{
$truc [ 'type_facture' ] = 1 ;
}
elseif ( f ( 'type' ) == 'cerfa' )
{
$truc [ 'type_facture' ] = 2 ;
}
2020-10-24 10:08:44 +02:00
elseif ( f ( 'type' ) == 'cotis' )
{
$truc [ 'type_facture' ] = 3 ;
}
2020-10-24 07:28:31 +02:00
2019-11-03 17:51:31 +01:00
foreach ( f ( 'designation' ) as $k => $value )
{
$truc [ 'contenu' ][ $k ][ 'designation' ] = $value ;
$truc [ 'contenu' ][ $k ][ 'prix' ] = f ( 'prix' )[ $k ];
$truc [ 'toto' ] += f ( 'prix' )[ $k ];
}
$truc [ 'total' ] = $truc [ 'toto' ];
unset ( $truc [ 'toto' ]);
if ( f ( 'base_receveur' ) == 'client' )
{
$truc [ 'receveur_membre' ] = 0 ;
$truc [ 'receveur_id' ] = f ( 'client' );
}
elseif ( f ( 'base_receveur' ) == 'membre' )
{
$truc [ 'receveur_membre' ] = 1 ;
$truc [ 'receveur_id' ] = f ( 'membre' );
}
$id = $facture -> add ( $truc );
Utils :: redirect ( PLUGIN_URL . 'facture.php?id=' . ( int ) $id );
}
catch ( UserException $e )
{
$form -> addError ( $e -> getMessage ());
}
2019-11-02 17:53:27 +01:00
}
}
$tpl -> assign ( 'client_id' , f ( 'client' ) ? : - 1 );
$tpl -> assign ( 'membre_id' , f ( 'membre' ) ? : - 1 );
2020-03-22 06:24:13 +01:00
2019-11-02 17:53:27 +01:00
$designations = [];
$prix = [];
2020-10-24 07:28:31 +02:00
if (( $d = f ( 'designation' )) && ( $p = f ( 'prix' )) && implode ( $d ))
2019-11-02 17:53:27 +01:00
{
foreach ( $d as $k => $v )
{
if ( $v == '' && $p [ $k ] == 0 )
{
continue ;
}
$designations [] = $v ;
$prix [] = $p [ $k ];
}
}
2020-10-24 07:28:31 +02:00
else {
$designations = [ 'Exemple' ];
$prix = [ 1.5 ];
}
2019-11-02 17:53:27 +01:00
$tpl -> assign ( 'designations' , $designations );
$tpl -> assign ( 'prix' , $prix );
2020-10-24 09:19:21 +02:00
$tpl -> assign ( 'identite' , $identite );
$tpl -> assign ( 'membres' , ( array ) DB :: getInstance () -> get ( 'SELECT id, ' . $identite . ' FROM membres WHERE id_categorie != -2 NOT IN (SELECT id FROM membres_categories WHERE cacher = 1);' ));
2019-11-02 17:53:27 +01:00
$tpl -> assign ( 'clients' , $client -> listAll ());
2019-11-03 17:51:31 +01:00
$tpl -> display ( PLUGIN_ROOT . '/templates/facture_ajouter.tpl' );