diff --git a/contrib/document_test/facture.odt b/contrib/document_test/facture.odt index 9087402c5..9b944843b 100644 Binary files a/contrib/document_test/facture.odt and b/contrib/document_test/facture.odt differ diff --git a/html/admin/sql/dossier1/schema.sql b/html/admin/sql/dossier1/schema.sql index 62b26d569..80aa47d5a 100644 --- a/html/admin/sql/dossier1/schema.sql +++ b/html/admin/sql/dossier1/schema.sql @@ -939,6 +939,12 @@ CREATE SEQUENCE s_user_jrn NO MAXVALUE NO MINVALUE CACHE 1; +CREATE SEQUENCE s_cbc + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + CREATE TABLE stock_goods ( sg_id integer DEFAULT nextval('s_stock_goods'::text) NOT NULL, j_id integer, diff --git a/html/admin/sql/mod1/schema.sql b/html/admin/sql/mod1/schema.sql index 2668d07fe..9fe4e362f 100644 --- a/html/admin/sql/mod1/schema.sql +++ b/html/admin/sql/mod1/schema.sql @@ -1439,6 +1439,11 @@ CREATE SEQUENCE s_attr_def NO MINVALUE CACHE 1; +CREATE SEQUENCE s_cbc + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; diff --git a/html/admin/sql/mod2/schema.sql b/html/admin/sql/mod2/schema.sql index a9cf3c77e..a26f2029f 100644 --- a/html/admin/sql/mod2/schema.sql +++ b/html/admin/sql/mod2/schema.sql @@ -309,6 +309,11 @@ CREATE SEQUENCE s_central NO MAXVALUE NO MINVALUE CACHE 1; +CREATE SEQUENCE s_cbc + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; CREATE SEQUENCE s_central_order START WITH 1 diff --git a/html/admin/sql/patch/upgrade13.sql b/html/admin/sql/patch/upgrade13.sql index cf85aef52..0f35cbc11 100644 --- a/html/admin/sql/patch/upgrade13.sql +++ b/html/admin/sql/patch/upgrade13.sql @@ -556,4 +556,10 @@ insert into action values (30,'Module Gestion'); insert into format_csv_banque values ('Argenta Belgique','argenta_be.inc.php'); insert into format_csv_banque values ('CBC Belgique','cbc_be.inc.php'); +CREATE SEQUENCE s_cbc + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + commit; diff --git a/html/admin/sql/patch/upgrade8.sql b/html/admin/sql/patch/upgrade8.sql index 6f7d673a6..3ef3ace0b 100644 --- a/html/admin/sql/patch/upgrade8.sql +++ b/html/admin/sql/patch/upgrade8.sql @@ -65,10 +65,10 @@ INSERT INTO format_csv_banque VALUES ('ING', 'ing_be.inc.php'); INSERT INTO format_csv_banque VALUES ('CBC', 'cbc_be.inc.php'); CREATE TABLE import_tmp ( - code text, - date_exec date, - date_valeur date, - montant text, + code text not null, + date_exec date not null , + date_valeur date not null, + montant number(20,4) not null default 0, devise text, compte_ordre text, detail text, diff --git a/html/style.css b/html/style.css index 549388c31..4c4d97642 100644 --- a/html/style.css +++ b/html/style.css @@ -181,6 +181,11 @@ td.selectedcell{ color:white; } +td.mtitle a.mtitle { + text-decoration:none; + color:white; +} + a.mtitle { text-decoration:none; color:grey; diff --git a/include/cbc_be.inc.php b/include/cbc_be.inc.php index a6625dd58..a48a05da9 100644 --- a/include/cbc_be.inc.php +++ b/include/cbc_be.inc.php @@ -26,15 +26,37 @@ // Bank CBC //----------------------------------------------------- $row=1; +StartSql($p_cn); while (($data = fgetcsv($handle, 2000,'!@')) !== FALSE) { $num = count($data); + echo_debug('cbc_be',__LINE__,$num); + echo_debug('cbc_be',__LINE__,var_export($data,true)); for ($c=0; $c < $num; $c++) { //----------------------------------------------------- // Parsing CSV comes here //----------------------------------------------------- + $row=split(';',$data[$c]); + echo_debug('cbc_be',__LINE__,'$row = '.var_export($row,true)); + echo_debug('cbc_be',__LINE__,'sizeof($row)'.sizeof($row)); + if ( sizeof ($row) < 13 ) + continue; - - + $num_compte=$row[0]; + $date_exec=$row[3]; + $date_val=$row[4]; + // remove first the thousand sep. + $montant=str_replace('.','',$row[6]); + // replace the coma by a period + $montant=str_replace(',','.',$montant); + // remove the sign + $montant=str_replace('+','',$montant); + $devise=$row[1]; + $compte_ordre=$row[0]; + $detail=$row[7].$row[8].$row[9].$row[10]; + if ( ereg('[0-9]{3}-[0-9]{7}-[0-9]{2}',$row[7],$r) ) + { + $compte_ordre=$r[0]; + } //----------------------------------------------------- // insert into import_tmp //----------------------------------------------------- @@ -48,9 +70,9 @@ while (($data = fgetcsv($handle, 2000,'!@')) !== FALSE) { bq_account , jrn, ok) - values ('$code', - '$date_exec', - '$date_exec', + values (nextval('s_cbc'), + to_date('$date_exec','YYYYMMDD'), + to_date('$date_exec','YYYYMMDD'), $montant, '$devise', '".addslashes($compte_ordre)."', @@ -58,6 +80,11 @@ while (($data = fgetcsv($handle, 2000,'!@')) !== FALSE) { '$p_bq_account', $p_jrn, false)"; + if ( ExecSql($p_cn,$Sql) == false ) + { + Rollback($p_cn); + break; + } } // for ($c=0;$c<$num;$c++) $row++; } // file is read diff --git a/include/import_inc.php b/include/import_inc.php index 5000afb5b..8ca45ddf5 100644 --- a/include/import_inc.php +++ b/include/import_inc.php @@ -22,6 +22,7 @@ include_once("jrn.php"); include_once("preference.php"); include_once("user_common.php"); +require_once('class_user.php'); /*! ************************************************** * \brief Parse the file and insert the record @@ -85,90 +86,98 @@ function VerifImport($p_cn){ } } /*!\brief Transfert data into the ledger + * \param $p_cn connx + * \param $periode periode */ function TransferCSV($p_cn, $periode){ //on obtient la période courante - //$p_user = $_SESSION['g_user']; - //$periode = GetUserPeriode($p_cn,$p_user); - //$periode = $p_user->GetPeriode(); - // on trouve les dates frontières de cette période - $sql = "select p_start,p_end from parm_periode where p_id = '".$periode."'"; - $Res=ExecSql($p_cn,$sql); - $val = pg_fetch_array($Res); - $start = $val['p_start']; $end = $val['p_end']; - - $sql = "select * from import_tmp where poste_comptable is not null and poste_comptable <> '' - AND ok <> TRUE AND date_exec BETWEEN '".$start."' and '".$end."'"; - $Res=ExecSql($p_cn,$sql); - //echo "boucle: ".sizeof($Res)."
"; - //while($val = pg_fetch_array($Res)){ - $Max=pg_NumRows($Res); - echo $Max." opérations à transférer.
"; - for ($i = 0;$i < $Max;$i++) { - $val=pg_fetch_array($Res,$i); - - $code=$val['code']; $date_exec=$val['date_exec']; $montant=$val['montant']; $num_compte=$val['num_compte']; - $poste_comptable=$val['poste_comptable'];$bq_account=$val['bq_account']; - $jrn=$val['jrn']; + $User=new cl_user($p_cn); + $periode = $User->GetPeriode(); + // on trouve les dates frontières de cette période + $sql = "select to_char(p_start,'DD-MM-YYYY') as p_start,to_char(p_end,'DD-MM-YYYY') as p_end". + " from parm_periode where p_id = '".$periode."'"; + $Res=ExecSql($p_cn,$sql); + $val = pg_fetch_array($Res); + if ( $val == false ) + { + echo ""; + exit(); + } + $start ="to_date('".$val['p_start']."','DD-MM-YYYY')"; + $end = "to_date('".$val['p_end']."','DD-MM-YYYY')"; + var_dump($val); + $sql = "select * from import_tmp where poste_comptable is not null and poste_comptable <> '' + and ok <> TRUE AND date_exec BETWEEN ".$start." and ".$end; + $Res=ExecSql($p_cn,$sql); + //echo "boucle: ".sizeof($Res)."
"; + //while($val = pg_fetch_array($Res)){ + $Max=pg_NumRows($Res); + echo $Max." opérations à transférer.
"; + for ($i = 0;$i < $Max;$i++) { + $val=pg_fetch_array($Res,$i); + + $code=$val['code']; $date_exec=$val['date_exec']; $montant=$val['montant']; $num_compte=$val['num_compte']; + $poste_comptable=$val['poste_comptable'];$bq_account=$val['bq_account']; + $jrn=$val['jrn']; + + list($annee, $mois, $jour) = explode("-", $date_exec); + $date_exec = $jour.".".$mois.".".$annee; + + // Vérification que le poste comptable trouvé existe + $sqltest = "select * from tmp_pcmn WHERE pcm_val='".$poste_comptable."'"; + $Restest=ExecSql($p_cn,$sqltest); + $test=pg_NumRows($Restest); + if($test == 0) { + $sqlupdate = "update import_tmp set poste_comptable='' WHERE code='".$code."' AND num_compte='".$num_compte."'"; + $Resupdate=ExecSql($p_cn,$sqlupdate); + echo "Poste comptable erronné pour l'opération ".$num_compte."-".$code.", réinitialisation du poste comptable
"; + } else { + + // Finances + + //$seq = GetNextId($p_cn,'j_grpt')+1; + $seq=NextSequence($p_cn,'s_grpt'); + $p_user = $_SESSION['g_user']; + //$periode = GetUserPeriode($p_cn,$p_user); + //$periode = $User->GetPeriode(); + StartSql($p_cn); - list($annee, $mois, $jour) = explode("-", $date_exec); - $date_exec = $jour.".".$mois.".".$annee; - - // Vérification que le poste comptable trouvé existe - $sqltest = "select * from tmp_pcmn WHERE pcm_val='".$poste_comptable."'"; - $Restest=ExecSql($p_cn,$sqltest); - $test=pg_NumRows($Restest); - if($test == 0) { - $sqlupdate = "update import_tmp set poste_comptable='' WHERE code='".$code."' AND num_compte='".$num_compte."'"; - $Resupdate=ExecSql($p_cn,$sqlupdate); - echo "Poste comptable erronné pour l'opération ".$num_compte."-".$code.", réinitialisation du poste comptable
"; - } else { - - // Finances - - //$seq = GetNextId($p_cn,'j_grpt')+1; - $seq=NextSequence($p_cn,'s_grpt'); - $p_user = $_SESSION['g_user']; - //$periode = GetUserPeriode($p_cn,$p_user); - //$periode = $User->GetPeriode(); - StartSql($p_cn); - - $r=InsertJrnx($p_cn,"d",$p_user,$jrn,$bq_account,$date_exec,$montant,$seq,$periode); - if ( $r == false) { $Rollback($p_cn);exit("error 'import_inc.php' __LINE__");} - - $r=InsertJrnx($p_cn,"c",$p_user,$jrn,$poste_comptable,$date_exec,$montant,$seq,$periode); - if ( $r == false) { $Rollback($p_cn);exit("error 'import_inc.php' __LINE__");} - - //remove annoying double-quote - $num_compte=str_replace('"','',$num_compte); - $code=str_replace('\"','',$code); - - $r=InsertJrn($p_cn,$date_exec,NULL,$jrn,$num_compte." ".$code,$montant,$seq,$periode); - if ( $r == false ) { Rollback($p_cn); exit(" Error 'import_inc.php' __LINE__");} - - //$sql = "insert into jrn (jr_def_id,jr_montant,jr_comment,jr_date,jr_grpt_id,jr_tech_per) values ( ".$p_jrn.", abs(".round($montant,2)."), '".$num_compte." ".$code."','".$date_valeur."','".$seq."','".$periode."')"; - SetInternalCode($p_cn,$seq,$jrn); - - - echo "Tranfer de l'opération ".$code." effectué
"; - $sql2 = "update import_tmp set ok=TRUE where code='".$code."'"; - $Res2=ExecSql($p_cn,$sql2); - - Commit($p_cn); - } - } + $r=InsertJrnx($p_cn,"d",$p_user,$jrn,$bq_account,$date_exec,$montant,$seq,$periode); + if ( $r == false) { $Rollback($p_cn);exit("error 'import_inc.php' __LINE__");} + + $r=InsertJrnx($p_cn,"c",$p_user,$jrn,$poste_comptable,$date_exec,$montant,$seq,$periode); + if ( $r == false) { $Rollback($p_cn);exit("error 'import_inc.php' __LINE__");} + + //remove annoying double-quote + $num_compte=str_replace('"','',$num_compte); + $code=str_replace('\"','',$code); + + $r=InsertJrn($p_cn,$date_exec,NULL,$jrn,$num_compte." ".$code,$montant,$seq,$periode); + if ( $r == false ) { Rollback($p_cn); exit(" Error 'import_inc.php' __LINE__");} + + //$sql = "insert into jrn (jr_def_id,jr_montant,jr_comment,jr_date,jr_grpt_id,jr_tech_per) values ( ".$p_jrn.", abs(".round($montant,2)."), '".$num_compte." ".$code."','".$date_valeur."','".$seq."','".$periode."')"; + SetInternalCode($p_cn,$seq,$jrn); + + + echo "Tranfer de l'opération ".$code." effectué
"; + $sql2 = "update import_tmp set ok=TRUE where code='".$code."'"; + $Res2=ExecSql($p_cn,$sql2); + + Commit($p_cn); + } + } } /*! ************************************************** * \brief ShowForm for getting data about * the bank transfert in cvs * - * parm : database connection + * \param : database connection * - - * gen : - * - - * return: none + * \return none */ function ShowFormTransfert($p_cn){