v20240620110023 0.25.1
authorKilian Saffran <ksaffran@dks.lu>
Thu, 20 Jun 2024 09:03:39 +0000 (11:03 +0200)
committerKilian Saffran <ksaffran@dks.lu>
Thu, 20 Jun 2024 09:03:39 +0000 (11:03 +0200)
public_html/lib/App/Bankaccounts.php
public_html/lib/App/Cotisations.php
public_html/lib/App/Members.php
public_html/lib/version.php
public_html/scripts/parsestatements.php
public_html/tmpl/common/foot_js.php
public_html/tmpl/dialogs/dlg_bank_statements.php
public_html/tmpl/js/app/bankaccounts.min.js
public_html/tmpl/js/pages/bankaccounts.js

index 5bb0896..ca1f6cd 100644 (file)
@@ -23,16 +23,25 @@ class Bankaccounts extends stdClass {
   }
 
   public function getList($monthdate,$debit=false){
-    $sql="select bs.id,m.id_member,unaccent(UPPER(m.firstname)) as firstname,unaccent(UPPER(m.lastname)) as lastname,CONCAT(coalesce(unaccent(UPPER(m.lastname)),null),' ',coalesce(unaccent(UPPER(m.firstname)),'')) as membername,mc.date_month,bs.account,bs.bank,bs.statement_number,bs.transaction_amount,bs.value_date,bs.transaction_motivation,bs.transaction_label,bs.transaction_type,bs.client_reference,bs.counterparty_name,bs.counterparty_account,bs.filename
+    $sql="select * from (   
+select bs.id,mc.id_member,mc.membername,mc.date_month,bs.account,bs.bank,bs.statement_number,bs.transaction_amount,bs.value_date,bs.transaction_motivation,bs.transaction_label,bs.transaction_type,bs.client_reference,bs.counterparty_name,bs.counterparty_account,bs.filename
     from bank_statements bs 
-    left join members m on (m.ID_member=bs.id_member) 
-    left join members_cotisation mc on (mc.id=bs.id_members_cotisation)
-    where bs.value_date between date(".$this->dbh->value($monthdate).") and LAST_DAY(".$this->dbh->value($monthdate).") ".(($debit==true)?"":" AND bs.transaction_amount > 0.00 ")." order by bs.value_date,bs.statement_number;";
-    // $sql ="SELECT mc.id, mc.id_member, mc.date_month, mc.date_transaction, mc.status, mc.sepa_file_out, mc.transaction_file_in, mc.transaction_id, mc.last_sepa_code, mc.amount, mc.paymenttype, mc.created, mc.modified, 
-//  FROM members_cotisation mc join members m on (m.ID_member=mc.id_member) where mc.date_month = date(".$this->dbh->value($monthdate).");";
+    join (select mc1.id,mc1.id_bank_statement,mc1.date_month,mc1.id_member,CONCAT(unaccent(UPPER(coalesce(m1.lastname,''))),' ',unaccent(UPPER(coalesce(m1.firstname,'')))) as membername 
+from members_cotisation mc1 join members m1 on (mc1.id_member=m1.ID_member) where mc1.id_bank_statement is not null) mc on (bs.id=mc.id_bank_statement)
+    where bs.value_date between date(".$this->dbh->value($monthdate).") and LAST_DAY(".$this->dbh->value($monthdate).") 
+union 
+select bs.id, null id_member, null as membername, null as date_month,bs.account,bs.bank,bs.statement_number,bs.transaction_amount,bs.value_date,bs.transaction_motivation,bs.transaction_label,bs.transaction_type,bs.client_reference,bs.counterparty_name,bs.counterparty_account,bs.filename
+from bank_statements bs where bs.value_date between date(".$this->dbh->value($monthdate).") and LAST_DAY(".$this->dbh->value($monthdate).") and bs.id not in (select id_bank_statement from members_cotisation where id_bank_statement is not null)) aa ".(($debit==true)?"":" WHERE transaction_amount > 0.00 ")." order by value_date,statement_number";
+
     return $this->dbh->queryarray($sql);
   }
 
+  public function getCotisationLinks($idstatement){
+    $sql = "select mc1.id,mc1.id_bank_statement,mc1.date_month,mc1.id_member,CONCAT(unaccent(UPPER(coalesce(m1.lastname,''))),' ',unaccent(UPPER(coalesce(m1.firstname,'')))) as membername, mc1.amount,mc1.payed_amount
+from members_cotisation mc1 join members m1 on (mc1.id_member=m1.ID_member) where mc1.id_bank_statement=".$this->dbh->value($idstatement).";";
+return $this->dbh->queryarray($sql);
+  }
+
   public function getRowData($id){
     $sql = "SELECT * FROM bank_statements where id=".$this->dbh->value($id).";";
     return $this->dbh->query($sql);
index a1c066b..a562d5b 100644 (file)
@@ -36,6 +36,13 @@ unaccent(UPPER(m.firstname)) as firstname,unaccent(UPPER(m.lastname)) as lastnam
     return $this->dbh->queryarray($sql);
   }
 
+  public function getUnpaidVirList($idmember){
+    if ($idmember == null){ return array();}
+    $sql = "select mc.id, DATE_FORMAT(mc.date_month,'%m/%Y') as dspdatemonth, mc.id_member,mc.date_month,mc.status from members_cotisation mc where mc.paymenttype ='VIR' 
+and (mc.status != 'payed' or mc.status is null) and mc.id_member=".$this->dbh->value($idmember)." order by date_month DESC;";
+    return $this->dbh->queryarray($sql);
+  }
+
   public function getRowData($id){
     $sql = "SELECT id, id_member, date_month,DATE_FORMAT(date_month,'%m/%Y') as dspdate_month, date_transaction, status, sepa_file_out, transaction_file_in, transaction_id, last_sepa_code, amount, paymenttype, created, modified FROM members_cotisation where id=".$this->dbh->value($id).";";
     return $this->dbh->query($sql);
index 088fbbc..107091b 100644 (file)
@@ -33,6 +33,11 @@ class Members extends stdClass {
     return $this->dbh->queryarray($sql);\r
   }\r
 \r
+  public function getVirList(){\r
+    $sql = "select ID_member,CONCAT(unaccent(UPPER(coalesce(m.lastname,''))),' ',unaccent(UPPER(coalesce(m.firstname,''))),' (',m.ID_member,')') as membername from members m where m.daterelease is null and m.deleted is null and m.id_famillycommon is null and sepasigned != '1' order by membername ASC;";\r
+    return $this->dbh->queryarray($sql);\r
+  }\r
+\r
   public function getFamillyCommonList(){\r
     $sql= "SELECT ID_member as id, CONCAT(coalesce(unaccent(UPPER(lastname)),''),' ',coalesce(unaccent(UPPER(firstname)),''),' (',ID_member,')') as description\r
     FROM members WHERE daterelease is null and ID_famillycommon is null order by lastname ASC,firstname ASC;";\r
index c170b88..94d9fe8 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-$cfg["version"]="0.24.0";
+$cfg["version"]="0.25.1";
 if ($cfg["debug"] == "1"){
   $cfg["version"] =date('YmdHis');
 }
index 146b341..2a21b2c 100644 (file)
@@ -61,16 +61,16 @@ select ID_member,quota,CONCAT(coalesce(unaccent(UPPER(m.lastname)),null),' ',coa
             if ($cres["amount"] != null){
               $setamount= "amount='".$r["transaction_amount"]."',";
             }
-            $updsql= "update members_cotisation set payed_amount='".$r["transaction_amount"]."',".$setamount."paymenttype='VIR',status='payed',date_transaction=date('".$r["value_date"]."'),transaction_file_in='".$r["filename"]."',transaction_id='".$r["transaction_label"]."' where id=".$cres["id"].";";
-            $updsql2= "update bank_statements set id_member=".$cres["id_member"].",id_members_cotisation=".$cres["id"]." WHERE id=".$r["id"].";";
+            $updsql= "update members_cotisation set payed_amount='".$r["transaction_amount"]."',".$setamount."paymenttype='VIR',status='payed',date_transaction=date('".$r["value_date"]."'),transaction_file_in='".$r["filename"]."',transaction_id='".$r["transaction_label"]."',id_bank_statement='".$r["id"]."' where id=".$cres["id"].";";
+            // $updsql2= "update bank_statements set id_member=".$cres["id_member"].",id_members_cotisation=".$cres["id"]." WHERE id=".$r["id"].";";
             $db->exec($updsql);
             $db->exec($updsql2);
           } else {
-           $inssql = "INSERT INTO members_cotisation (id_member, date_month, date_transaction, status,  transaction_file_in, transaction_id,  amount, paymenttype,  payed_amount) VALUES (".$res[0]["ID_member"].", date('".substr($r["value_date"],0,8)."-01'), date('".$r["value_date"]."), 'payed',  '".$r["filename"]."', '".$r["transaction_label"]."',  '".$res[0]["quota"]."', 'VIR', '".$r["transaction_amount"]."');";
+           $inssql = "INSERT INTO members_cotisation (id_member, date_month, date_transaction, status,  transaction_file_in, transaction_id,  amount, paymenttype,  payed_amount,id_bank_statement) VALUES (".$res[0]["ID_member"].", date('".substr($r["value_date"],0,8)."-01'), date('".$r["value_date"]."), 'payed',  '".$r["filename"]."', '".$r["transaction_label"]."',  '".$res[0]["quota"]."', 'VIR', '".$r["transaction_amount"]."','".$r["id"]."');";
            $db->exec($inssql);
-           $sqlget= "select id,id_member from members_cotisation where date_month=date('".substr($r["value_date"],0,8)."-01') and id_member='".$res[0]["ID_member"]."';";
-           $sres = $db->query($sqlget);
-           $updsql2= "update bank_statements set id_member=".$sres["id_member"].",id_members_cotisation=".$sres["id"]." WHERE id=".$r["id"].";";
+          //  $sqlget= "select id,id_member from members_cotisation where date_month=date('".substr($r["value_date"],0,8)."-01') and id_member='".$res[0]["ID_member"]."';";
+          //  $sres = $db->query($sqlget);
+          //  $updsql2= "update bank_statements set id_member=".$sres["id_member"].",id_members_cotisation=".$sres["id"]." WHERE id=".$r["id"].";";
            $db->exec($updsql2);
         }
       }
index 8e035b5..3a8832f 100644 (file)
@@ -3,6 +3,7 @@
 <script type="text/javascript" src="<?php echo $cfg["abspath"]; ?>vendor/xlsx/xlsx.full.min.js?v=<?php echo $cfg["version"]; ?>"></script>
 <script type="text/javascript" src="<?php echo $cfg["abspath"]; ?>vendor/slimselect/slimselect.min.js?v=<?php echo $cfg["version"]; ?>"></script>
 <script type="text/javascript" src="<?php echo $cfg["abspath"]; ?>vendor/flatpickr/flatpickr.min.js?v=<?php echo $cfg["version"]; ?>"></script>
+<script type="text/javascript" src="<?php echo $cfg["abspath"]; ?>vendor/flatpickr/plugins/monthSelect/index.js?v=<?php echo $cfg["version"]; ?>"></script>
 <script type="text/javascript" src="<?php echo $cfg["abspath"]; ?>vendor/flatpickr/l10n/de.js?v=<?php echo $cfg["version"]; ?>"></script>
 <script type="text/javascript" src="<?php echo $cfg["abspath"]; ?>vendor/tinymce/tinymce.min.js?v=<?php echo $cfg["version"]; ?>"></script>
 <script type="text/javascript" src="<?php echo $cfg["abspath"]; ?>vendor/marked/marked.min.js?v=<?php echo $cfg["version"]; ?>"></script>
index 9242b8a..5602b9f 100644 (file)
@@ -6,58 +6,48 @@
     </header>
     <div class="container">
      
-      <form id="frm_banktransaction">
+      <form id="frm_banktransaction" style="margin-bottom: 6px;">
         <?php 
-          $dateopts=null;
-          // $typeopts = array(
-          //   array("value" => "VIR","text" => "VIR"),
-          //   array("value" => "SEPA","text" => "SEPA")
-          // );
-          // $statusopts = array(
-          //   array("value" => "","text" => ""),
-          //   array("value" => "exported","text" => "exporté"),
-          //   array("value" => "sended","text" => "envoyé"),
-          //   array("value" => "payed","text" => "payé"),
-          //   array("value" => "error","text" => "erreur")
-          // );
-//           id
-// id_member
-// id_members_cotisation
-// filename
-// account
-// bank
-// statement_number
-// value_date
-// transaction_amount
-// transaction_currency
-// transaction_label
-// transaction_type
-// client_reference
-// counterparty_name
-// counterparty_account
-// counterparty_data
-// transaction_motivation
-
-          // $frm->hidden("bank_statements","id");
-          // $frm->hidden("bank_statements","id_member");
-          // $frm->hidden("bank_statements","id_member_cotisation");
-          // $frm->hidden("bank_statements","value_date");
-          // $frm->input("bank_statements","dspdate_month","Mois","text",(object) array("readonly" => "1","containerClass" => "s2"));
-          // $frm->input("bank_statements","date_transaction","Date Traitement","date",null); 
-          // $frm->select("bank_statements","status","Status",(object) array("data" => $statusopts,"containerClass" => "s2"));
-          // $frm->input("bank_statements","amount","montant","number",(object) array("containerClass" => "s2"));
-          // $frm->select("bank_statements","paymenttype","Type Payement",(object) array("data" => $typeopts,"containerClass" => "s2"));
-          // $frm->input("bank_statements","last_sepa_code","Code Sepa","text",(object) array("readonly" => "1","containerClass" => "s2"));
-          // $frm->input("bank_statements","sepa_file_out","Fichier SEPA Export","text",(object) array("readonly" => "1","containerClass" => "s6"));
-          // $frm->input("bank_statements","transaction_file_in","Fichier SEPA Import","text",(object) array("readonly" => "1","containerClass" => "s6"));
-          // $frm->input("bank_statements","transaction_id","Id Transaction","text",(object) array("readonly" => "1","containerClass" => "s6"));
+          $frm->hidden("bank_statements","id");
+          ?><div class="row"><?php
+          $frm->input("bank_statements","account","Compte bancaire","text",(object) array("readonly" => "1","containerClass" => "s6"));
+          $frm->input("bank_statements","bank","Banque","text",(object) array("readonly" => "1","containerClass" => "s6"));
+          ?></div><div class="row"><?php
+          $frm->input("bank_statements","value_date","Date","text",(object) array("readonly" => "1","containerClass" => "s3"));
+          $frm->input("bank_statements","statement_number","Extrait No","text",(object) array("readonly" => "1","containerClass" => "s1"));
+          $frm->input("bank_statements","transaction_amount","Montant","text",(object) array("readonly" => "1","containerClass" => "s2"));
+          $frm->input("bank_statements","filename","Fichier import","text",(object) array("readonly" => "1","containerClass" => "s6"));
+          ?></div><div class="row"><?php
+          $frm->input("bank_statements","counterparty_name","Nom Contrepartie","text",(object) array("readonly" => "1","containerClass" => "s12"));
+          $frm->input("bank_statements","transaction_motivation","Message","text",(object) array("readonly" => "1","containerClass" => "s12"));
+          ?></div>
+          </form>
+          <div class="row">
+          <form id="frm_cotisation_link"  style="margin-bottom: 2px;">
+          <div class="bar" style="background-color: var(--color-btn1);color: #fff;padding: 4px !important; "><div class="bar-item">Lien Cotisation</div></div>
+          <div class="bar"><?php
+          $frm->select("cotisation_link","id_member","Cotisation du membre",(object) array("onblur" => "","containerId" => "","containerClass" => "bar-item s6"));
+          // $frm->select("cotisatin_link","id_members_cotisation","Cotisation pour le mois",(object) array("onblur" => "","containerId" => "","containerClass" => "s6"));
+          $frm->input("cotisation_link","date_month","Date","date",(object) array("containerClass" => "bar-item s3"));
+          $frm->input("cotisation_link","amount","montant","number",(object) array("containerClass" => "bar-item s3"));
+          
+          ?>
+          <div style="padding-top: 10px;">
+          
+          <button class="bar-itembutton toolbarbtn" onclick="bankaccounts.addCotisationLink();"><span class="icon icon-plus"></span>ajouter</button>
+          </div>
+          </div>
+          </form>
+          </div>
+          <div id="tbl_cotisationlink"></div>
+          <?php
         ?>
-      </form>
+      
     </div>
     <footer class="container right-align padding-16">
-      <button class="button theme light margin-right border" onclick="document.getElementById('dlg_bank_statements').style.display='none'; return false;"><?php echo $lbl["cancel"]; ?></button> 
-      <button class="button toolbarbtn margin-right border"
-      id="dlg_bank_statements_btnok" onclick="document.getElementById('dlg_bank_statements').style.display='none';"><?php echo $lbl["save"]; ?></button>
+      <button class="button theme light margin-right border" onclick="document.getElementById('dlg_bank_statements').style.display='none'; return false;">Fermer</button> 
+      <!-- <button class="button toolbarbtn margin-right border"
+      id="dlg_bank_statements_btnok" onclick="document.getElementById('dlg_bank_statements').style.display='none';"><?php echo $lbl["save"]; ?></button> -->
     </footer>
   </div>
 </div>
\ No newline at end of file
index 213db28..dd0fd53 100644 (file)
@@ -1 +1 @@
-let bankaccounts={tbl:null,tblmonths:null,selects:{},debit:!0,filters:{status:{"":""}},init:function(){bankaccounts.tblmonths=new Tabulator("#tbl_months",{columnDefaults:{resizable:!1,headerFilterPlaceholder:"",headerSort:!0,headerFilter:"input",formatter:"html"},height:"calc(100vh - 65px)",layout:"fitDataStretch",selectable:1,columns:[{title:"Mois",field:"id",width:100,hozAlign:"center",formatter:"datetime",formatterParams:{inputFormat:"yyyy-MM-dd",outputFormat:"MM/yyyy",invalidPlaceholder:""}},{title:"Balance",field:"balance",width:80,headerFilter:!1,headerSort:!1,hozAlign:"right",formatter:"money",hozAlign:"right",formatterParams:{decimal:",",thousand:".",symbol:"€",symbolAfter:"p",negativeSign:"-",precision:2}}]}),bankaccounts.tblmonths.on("rowClick",(function(e,row){console.log("Show Month Data!"),bankaccounts.gettblData()})),bankaccounts.tbl=new Tabulator("#tbl_bankaccounts",{columnDefaults:{resizable:!1,headerFilterPlaceholder:"",headerSort:!0,headerFilter:"input",formatter:"html"},height:"calc(100vh - 120px)",layout:"fitDataFill",selectable:!0,selectableRangeMode:"click",rowContextMenu:[{label:'<span class="rowicon icon-edit"></span>éditer',action:function(e,row){return bankaccounts.edit(),!1}}],columns:[{title:"#",formatter:"rownum",headerFilter:null,headerMenu:tablehelper.headerMenu},{title:"Banque",field:"bank",width:200},{title:"account",field:"bank",width:200,visible:!1},{title:"membre",field:"membername",width:200},{title:"Mois",field:"date_month",visible:!1,formatter:"datetime",formatterParams:{inputFormat:"yyyy-MM-dd",outputFormat:"MM/yyyy",invalidPlaceholder:""}},{title:"Date",field:"value_date",formatter:"datetime",formatterParams:{inputFormat:"yyyy-MM-dd",outputFormat:"dd/MM/yyyy",invalidPlaceholder:""}},{title:"Extrait",field:"statement_number"},{title:"Montant",field:"transaction_amount",formatter:"money",hozAlign:"right",formatterParams:{decimal:",",thousand:".",symbol:"€",symbolAfter:"p",negativeSign:"-",precision:2},bottomCalc:tablehelper.totalAmount},{title:"Message",field:"transaction_motivation"},{title:"ID Transaction",field:"transaction_label",visible:!1},{title:"Type",field:"transaction_type",visible:!1},{title:"Ref Client",field:"client_reference",visible:!1},{title:"Nom contrepartie",field:"counterparty_name"},{title:"Compte contrepartie",field:"counterparty_account",visible:!1}]}),bankaccounts.tbl.on("rowDblClick",(function(e,row){bankaccounts.edit()}))},load:function(){bankaccounts.gettblmonths(),myapp.viewpanel("bankaccounts")},gettblmonths:function(){let sel=null;bankaccounts.tblmonths.initialized&&(sel=bankaccounts.tblmonths.getSelectedData()),postData({cl:"Bankaccounts",fn:"getMonthList",debit:bankaccounts.debit}).then(data=>{bankaccounts.tblmonths.setData(data.result.data).then(data=>{})}).catch(e=>{console.log(e)})},gettblData:function(){let sel=null;bankaccounts.tblmonths.initialized&&(sel=bankaccounts.tblmonths.getSelectedData()),console.log("Bankaccounts",sel),sel&&sel[0]&&postData({cl:"Bankaccounts",fn:"getList",monthdate:sel[0].id,debit:bankaccounts.debit}).then(data=>{bankaccounts.tbl.setData(data.result.data).then(data=>{})}).catch(e=>{console.log(e)})},edit:function(){let sel=null;bankaccounts.tbl&&(sel=bankaccounts.tbl.getSelectedData()),document.getElementById("dlg_bank_statements_btnok").setAttribute("onclick","bankaccounts.save();"),sel[0]&&postData({cl:"Bankaccounts",fn:"getRowData",id:sel[0].id}).then(data=>{dataform.fillform("bank_statements",this.selects,data.result.data),myapp.viewdialog("bank_statements")})},save(){},importCSV(){myapp.upload("Import fichier CSV/TXT","","importer","annuler","bankaccounts.importFile();","text/plain")},getProcessInfo(logfile){postData({cl:"WorkerProcess",fn:"getLastWorkerInfo",logfile:logfile}).then(data=>{data.result.data.info&&"error"!=data.result.data.status?(myapp.setDataloadText(data.result.data.info),data.result.data.info.startsWith("End: ")&&(progressinfo.stopGetInfo(),logfile.endsWith("importcsv.log")&&!data.result.data.info.startsWith("End: Erreur:")&&myapp.message("Succès",data.result.data.success+" données importées!"),logfile.endsWith("parsestatements.log")&&!data.result.data.info.startsWith("End: Erreur:")&&bankaccounts.gettblData())):"error"==data.result.data.status&&(myapp.setDataloadText(data.result.data.error),progressinfo.stopGetInfo())}).catch(e=>{myapp.setDataloadText("ne peux pas avoir d'info sur le progrès!")})},importFile(){myapp.openDataload("Import données","Attendez svp! Import Fichier encours!"),postFile(document.getElementById("dlg_uploadfile_files"),{folder:"importstatement"}).then(data=>{data.file?postData({cl:"Bankaccounts",fn:"startImport",file:data.file}).then(data=>{progressinfo.startGetInfo("bankaccounts.getProcessInfo('"+data.result.data.log+"')",1)}):(myapp.closeDataload(),myapp.message("Erreur","Échec de l'importation du fichier!"))}).catch(e=>{myapp.closeDataload(),myapp.message("Erreur","Échec de l'importation du fichier!",e.msg)})},findCotisation:function(){myapp.openDataload("Recherche Cotisations","Attendez svp! Recherche en cours!");let selmonyear=bankaccounts.tblmonths.getSelectedData();selmonyear[0]?postData({cl:"Bankaccounts",fn:"checkTransactions",month:selmonyear[0].id}).then(data=>{progressinfo.startGetInfo("bankaccounts.getProcessInfo('"+data.result.data.log+"')",1)}).catch(e=>{myapp.closeDataload(),myapp.message("Erreur","pas de fichier status retourné!",e.msg)}):myapp.message("Info","Pas de mois sélectionné!")}};
\ No newline at end of file
+let bankaccounts={tbl:null,tblmonths:null,selects:{},debit:!0,filters:{status:{"":""}},init:function(){flatpickr("#date_month",{altInput:!0,allowInput:!1,altFormat:"m/Y",dateFormat:"Y-m-d",onClose:function(selectedDates,dateStr,instance){}}),bankaccounts.selects.id_member=new SlimSelect({select:"#id_member",settings:{showSearch:!0},events:{afterClose:()=>{bankaccounts.getMembersUnpaidMonth(bankaccounts.selects.id_member.getSelected()[0])}}}),bankaccounts.selects.id_members_cotisation=new SlimSelect({select:"#id_members_cotisation",settings:{showSearch:!1},events:{afterClose:()=>{}}}),bankaccounts.tblmonths=new Tabulator("#tbl_months",{columnDefaults:{resizable:!1,headerFilterPlaceholder:"",headerSort:!0,headerFilter:"input",formatter:"html"},height:"calc(100vh - 65px)",layout:"fitDataStretch",selectable:1,columns:[{title:"Mois",field:"id",width:100,hozAlign:"center",formatter:"datetime",formatterParams:{inputFormat:"yyyy-MM-dd",outputFormat:"MM/yyyy",invalidPlaceholder:""}},{title:"Balance",field:"balance",width:80,headerFilter:!1,headerSort:!1,hozAlign:"right",formatter:"money",hozAlign:"right",formatterParams:{decimal:",",thousand:".",symbol:"€",symbolAfter:"p",negativeSign:"-",precision:2}}]}),bankaccounts.tblmonths.on("rowClick",(function(e,row){bankaccounts.gettblData()})),bankaccounts.tblcotisationlink=new Tabulator("#tbl_cotisationlink",{columnDefaults:{resizable:!1,headerFilterPlaceholder:"",headerSort:!1,headerFilter:!1,formatter:"html"},height:"120px",layout:"fitDataStretch",selectable:1,rowContextMenu:[{label:'<span class="rowicon icon-remove"></span>supprimer',action:function(e,row){return bankaccounts.confirmDeleteCotisationLink(),!1}}],columns:[{title:"Membre",field:"membername",width:400},{title:"Mois",field:"date_month",width:150,hozAlign:"center",formatter:"datetime",formatterParams:{inputFormat:"yyyy-MM-dd",outputFormat:"MM/yyyy",invalidPlaceholder:""}},{title:"Montant",field:"amount",width:80,headerFilter:!1,headerSort:!1,hozAlign:"right",formatter:"money",hozAlign:"right",formatterParams:{decimal:",",thousand:".",symbol:"€",symbolAfter:"p",negativeSign:"-",precision:2}}]}),bankaccounts.tbl=new Tabulator("#tbl_bankaccounts",{columnDefaults:{resizable:!1,headerFilterPlaceholder:"",headerSort:!0,headerFilter:"input",formatter:"html"},height:"calc(100vh - 120px)",layout:"fitDataFill",selectable:!0,selectableRangeMode:"click",rowContextMenu:[{label:'<span class="rowicon icon-edit"></span>éditer',action:function(e,row){return bankaccounts.edit(),!1}}],columns:[{title:"#",formatter:"rownum",headerFilter:null,headerMenu:tablehelper.headerMenu},{title:"Banque",field:"bank",width:200},{title:"account",field:"bank",width:200,visible:!1},{title:"membre",field:"membername",width:200},{title:"Mois",field:"date_month",visible:!1,formatter:"datetime",formatterParams:{inputFormat:"yyyy-MM-dd",outputFormat:"MM/yyyy",invalidPlaceholder:""}},{title:"Date",field:"value_date",formatter:"datetime",formatterParams:{inputFormat:"yyyy-MM-dd",outputFormat:"dd/MM/yyyy",invalidPlaceholder:""}},{title:"Extrait",field:"statement_number"},{title:"Montant",field:"transaction_amount",formatter:"money",hozAlign:"right",formatterParams:{decimal:",",thousand:".",symbol:"€",symbolAfter:"p",negativeSign:"-",precision:2},bottomCalc:tablehelper.totalAmount},{title:"Message",field:"transaction_motivation"},{title:"ID Transaction",field:"transaction_label",visible:!1},{title:"Type",field:"transaction_type",visible:!1},{title:"Ref Client",field:"client_reference",visible:!1},{title:"Nom contrepartie",field:"counterparty_name"},{title:"Compte contrepartie",field:"counterparty_account",visible:!1}]}),bankaccounts.tbl.on("rowDblClick",(function(e,row){bankaccounts.edit()})),bankaccounts.getVirMembers()},load:function(){bankaccounts.gettblmonths(),myapp.viewpanel("bankaccounts")},gettblmonths:function(){let sel=null;bankaccounts.tblmonths.initialized&&(sel=bankaccounts.tblmonths.getSelectedData()),postData({cl:"Bankaccounts",fn:"getMonthList",debit:bankaccounts.debit}).then(data=>{bankaccounts.tblmonths.setData(data.result.data).then(data=>{})}).catch(e=>{console.log(e)})},gettblData:function(){let sel=null;myapp.openDataload("Cmptes bancaires","Attendez svp! chargement en cours!"),bankaccounts.tblmonths.initialized&&(sel=bankaccounts.tblmonths.getSelectedData()),sel&&sel[0]&&postData({cl:"Bankaccounts",fn:"getList",monthdate:sel[0].id,debit:bankaccounts.debit}).then(data=>{myapp.closeDataload(),bankaccounts.tbl.setData(data.result.data).then(data=>{})}).catch(e=>{myapp.closeDataload(),console.log(e)})},edit:function(){let sel=null;bankaccounts.tbl&&(sel=bankaccounts.tbl.getSelectedData()),console.log("bank account data",sel[0]),bankaccounts.tblcotisationlink.setData([]),sel[0]&&(postData({cl:"Bankaccounts",fn:"getRowData",id:sel[0].id}).then(data=>{dataform.fillform("bank_statements",this.selects,data.result.data),myapp.viewdialog("bank_statements")}),postData({cl:"Bankaccounts",fn:"getCotisationLinks",idstatement:sel[0].id}).then(data=>{data.result.data&&bankaccounts.tblcotisationlink.setData(data.result.data)}))},save(){let datatosave=dataform.getContent("bank_statements",bankaccounts.selects);console.log(datatosave)},importCSV(){myapp.upload("Import fichier CSV/TXT","","importer","annuler","bankaccounts.importFile();","text/plain")},getProcessInfo(logfile){postData({cl:"WorkerProcess",fn:"getLastWorkerInfo",logfile:logfile}).then(data=>{data.result.data.info&&"error"!=data.result.data.status?(myapp.setDataloadText(data.result.data.info),data.result.data.info.startsWith("End: ")&&(progressinfo.stopGetInfo(),logfile.endsWith("importcsv.log")&&!data.result.data.info.startsWith("End: Erreur:")&&myapp.message("Succès",data.result.data.success+" données importées!"),logfile.endsWith("parsestatements.log")&&!data.result.data.info.startsWith("End: Erreur:")&&bankaccounts.gettblData())):"error"==data.result.data.status&&(myapp.setDataloadText(data.result.data.error),progressinfo.stopGetInfo())}).catch(e=>{myapp.setDataloadText("ne peux pas avoir d'info sur le progrès!")})},importFile(){myapp.openDataload("Import données","Attendez svp! Import Fichier encours!"),postFile(document.getElementById("dlg_uploadfile_files"),{folder:"importstatement"}).then(data=>{data.file?postData({cl:"Bankaccounts",fn:"startImport",file:data.file}).then(data=>{progressinfo.startGetInfo("bankaccounts.getProcessInfo('"+data.result.data.log+"')",1)}):(myapp.closeDataload(),myapp.message("Erreur","Échec de l'importation du fichier!"))}).catch(e=>{myapp.closeDataload(),myapp.message("Erreur","Échec de l'importation du fichier!",e.msg)})},findCotisation:function(){myapp.openDataload("Recherche Cotisations","Attendez svp! Recherche en cours!");let selmonyear=bankaccounts.tblmonths.getSelectedData();selmonyear[0]?postData({cl:"Bankaccounts",fn:"checkTransactions",month:selmonyear[0].id}).then(data=>{progressinfo.startGetInfo("bankaccounts.getProcessInfo('"+data.result.data.log+"')",1)}).catch(e=>{myapp.closeDataload(),myapp.message("Erreur","pas de fichier status retourné!",e.msg)}):myapp.message("Info","Pas de mois sélectionné!")},getVirMembers:function(){this.selects.id_member&&postData({cl:"Members",fn:"getVirList"}).then(data=>{data.result.data.unshift({ID_member:null,membername:null}),dataform.fillselectlist(this.selects.id_member,data.result.data,"ID_member","membername")})},getMembersUnpaidMonth:function(){this.selects.id_members_cotisation&&postData({cl:"Cotisations",fn:"getUnpaidVirList"}).then(data=>{data.result.data.unshift({id:null,dspdatemonth:null}),dataform.fillselectlist(this.selects.id_members_cotisation,data.result.data,"id","dspdatemonth")})},confirmDeleteCotisationLink:function(){myapp.message("Info","Ceci ne fonctionne pas encore!")},addCotisationLink:function(){myapp.message("Info","Ceci ne fonctionne pas encore!")}};
\ No newline at end of file
index 508ea07..80a69a2 100644 (file)
@@ -8,6 +8,50 @@ let bankaccounts = {
     status:{"":""}
   },
   init: function(){
+    flatpickr("#date_month",{altInput: true,
+      allowInput: false,
+      altFormat: "m/Y",
+      dateFormat: "Y-m-d",
+    //   plugins: [
+    //     new monthSelectPlugin({
+    //       shorthand: true, //defaults to false
+    //       dateFormat: "Y-m-d", //defaults to "F Y"
+    //       altFormat: "m/Y", //defaults to "F Y"
+    //     })
+    // ],
+      //disable: true,
+      onClose: function(selectedDates, dateStr, instance) {
+        //dataform.savefield(document.getElementById("date_transaction"),null);
+      },
+    });
+    bankaccounts.selects["id_member"]=new SlimSelect({
+      select: "#id_member",
+      settings: {showSearch: true },
+      events: {
+        afterClose: () =>{
+          bankaccounts.getMembersUnpaidMonth(bankaccounts.selects["id_member"].getSelected()[0])
+
+          //let sel = index.tbl.getSelectedData();
+          // if (sel[0]){
+          //   //index.setFamillyCommon();
+          //   //dataform.savefielddata(document.getElementById("ID_famillyid_membercommon"),index.selects["ID_famillycommon"].getSelected()[0]);
+          // }
+        }
+      }
+    });
+    bankaccounts.selects["id_members_cotisation"]=new SlimSelect({
+      select: "#id_members_cotisation",
+      settings: {showSearch: false },
+      events: {
+        afterClose: () =>{
+          //let sel = index.tbl.getSelectedData();
+          // if (sel[0]){
+          //   //index.setFamillyCommon();
+          //   //dataform.savefielddata(document.getElementById("ID_famillyid_membercommon"),index.selects["ID_famillycommon"].getSelected()[0]);
+          // }
+        }
+      }
+    });
     bankaccounts.tblmonths  = new Tabulator("#tbl_months", {
       columnDefaults:{
         resizable: false,
@@ -32,9 +76,35 @@ let bankaccounts = {
       ]
     });
     bankaccounts.tblmonths.on("rowClick",function(e, row){
-      console.log("Show Month Data!");
+      //console.log("Show Month Data!");
       bankaccounts.gettblData();
     });
+    bankaccounts.tblcotisationlink  = new Tabulator("#tbl_cotisationlink", {
+      columnDefaults:{
+        resizable: false,
+        headerFilterPlaceholder:"",
+        headerSort: false,
+        headerFilter:false,
+        formatter:"html",
+      },
+      height: "120px",
+      layout: "fitDataStretch",
+      selectable: 1,
+      rowContextMenu:[
+        {label:'<span class="rowicon icon-remove"></span>supprimer', action:function(e, row){bankaccounts.confirmDeleteCotisationLink(); return false;}},
+      ],
+      //selectableRangeMode:"click",
+      //selectableRangeMode:"click",
+      // groupBy:["groupname",
+      // groupStartOpen:[true],
+      // groupHeader:[function(value, count, data,group){ return ((value)?value:"");}],
+      columns: [
+          { title: "Membre",field: "membername",width: 400 },
+          { title: "Mois",field: "date_month",width: 150,hozAlign: "center",formatter:"datetime", formatterParams:{inputFormat:"yyyy-MM-dd",outputFormat:"MM/yyyy",invalidPlaceholder:""}},
+          { title: "Montant",field: "amount", width: 80,headerFilter:false,headerSort: false,hozAlign: "right",formatter:"money",hozAlign:"right",formatterParams:{decimal:",",thousand:".",symbol:"€",symbolAfter:"p", negativeSign:"-",precision:2}},
+      ]
+    });
+    
     //ofh_tbl_payments = tablehelper.findTop("tbar_tabmembers") ;
     bankaccounts.tbl = new Tabulator("#tbl_bankaccounts",{
       columnDefaults:{
@@ -72,7 +142,7 @@ let bankaccounts = {
     bankaccounts.tbl.on("rowDblClick",function(e, row){
       bankaccounts.edit();
     });
-
+    bankaccounts.getVirMembers();
   
   },
   load: function(){
@@ -105,13 +175,15 @@ let bankaccounts = {
   gettblData: function(){
     //console.log("Bankaccounts");
     let sel = null;
+    myapp.openDataload("Cmptes bancaires","Attendez svp! chargement en cours!");
     if (bankaccounts.tblmonths.initialized){
       sel = bankaccounts.tblmonths.getSelectedData();
     }
-    console.log("Bankaccounts",sel);
+    //console.log("Bankaccounts",sel);
     if (sel && sel[0]){
       postData({"cl":"Bankaccounts","fn":"getList","monthdate":sel[0].id,"debit":bankaccounts.debit}).then(data => {
         //console.log("Bankaccounts",data.result.data);
+        myapp.closeDataload();
         bankaccounts.tbl.setData(data.result.data).then( data => {
   
         });
@@ -119,7 +191,7 @@ let bankaccounts = {
         //   if(sel && sel[0]){bankaccounts.tblmonths.selectRow(sel[0]['id']);}
         // }
         //);
-      }).catch(e => { console.log(e)});
+      }).catch(e => { myapp.closeDataload();console.log(e)});
     }
     
   },
@@ -132,18 +204,28 @@ let bankaccounts = {
     if (bankaccounts.tbl){
       sel = bankaccounts.tbl.getSelectedData();
     }
-    document.getElementById("dlg_bank_statements_btnok").setAttribute('onclick',"bankaccounts.save();");
+    console.log("bank account data",sel[0]);
+    bankaccounts.tblcotisationlink.setData([]);
+    //document.getElementById("dlg_bank_statements_btnok").setAttribute('onclick',"bankaccounts.save();");
     if (sel[0]){
       postData({"cl":"Bankaccounts","fn":"getRowData","id":sel[0].id}).then( data => {
         //console.log("get Cotisation",data.result.data);
         dataform.fillform("bank_statements",this.selects,data.result.data);
         myapp.viewdialog("bank_statements");
+        
+      });
+      postData({"cl":"Bankaccounts","fn":"getCotisationLinks","idstatement":sel[0].id}).then(data => {
+        if (data.result.data){
+          bankaccounts.tblcotisationlink.setData(data.result.data);
+        }
       });
     }
     
   },
   save(){
-    // let datatosave = dataform.getContent("bank_statements",bankaccounts.selects);
+
+    let datatosave = dataform.getContent("bank_statements",bankaccounts.selects);
+    console.log(datatosave);
     // let transferdata = {"amount":datatosave["amount"], 
     //   "paymenttype":datatosave["paymenttype"],
     //   "date_transaction":datatosave["date_transaction"],
@@ -241,5 +323,27 @@ let bankaccounts = {
     } else {
       myapp.message("Info","Pas de mois sélectionné!");
     }
+  },
+  getVirMembers: function(){
+    if (this.selects["id_member"]){
+      postData({"cl":"Members","fn":"getVirList"}).then(data => {
+        data.result.data.unshift({"ID_member":null,"membername":null});
+        dataform.fillselectlist(this.selects["id_member"],data.result.data,'ID_member','membername');
+      });
+    }
+  },
+  getMembersUnpaidMonth: function(){
+    if (this.selects["id_members_cotisation"]){
+      postData({"cl":"Cotisations","fn":"getUnpaidVirList"}).then(data => {
+        data.result.data.unshift({"id":null,"dspdatemonth":null});
+        dataform.fillselectlist(this.selects["id_members_cotisation"],data.result.data,'id','dspdatemonth');
+      });
+    }
+  },
+  confirmDeleteCotisationLink: function(){
+    myapp.message("Info","Ceci ne fonctionne pas encore!");
+  },
+  addCotisationLink: function(){
+    myapp.message("Info","Ceci ne fonctionne pas encore!");
   }
 };