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){