Patch level : 12.0 1059

Files correlati     : bs0500a.h bs0500a.uml bs0500.cpp

Gestione Banca precedente migliorata e filtrata
This commit is contained in:
Francesco_Fucarino 2021-05-03 11:10:35 +02:00
parent 075ea73b43
commit d5d5b04dd8
3 changed files with 92 additions and 20 deletions

View File

@ -20,7 +20,6 @@
#include <clifo.h>
#include <cfven.h>
#include <rcausali.h>
#include "bsutility.h"
#define BS_DTULTAGG "DtUltAgg"
@ -136,8 +135,7 @@ void TImporta_mask::autoload()
f->set(ini_get_bool(CONFIG_DITTA, "bs", name,true) ? "X" : " ");
else
f->set(ini_get_string(CONFIG_DITTA, "bs", name));
}
}
}
}
@ -165,6 +163,8 @@ class TImporta_sync : public TSkeleton_application
TString _psw;
TFilename _sqlog;
TLog_report* _log;
bool _banche_pres_loaded;
TAssoc_array _banche_pres;
private:
const TString& comune(const TRecordset& recset, const char* fld_cap, const char* fld_den) const;
@ -197,12 +197,14 @@ protected:
void sync_corrisp(const TDate& dal, const TDate& al);
void sync_mov(int tipotestata, const TDate& dal, const TDate& al);
void sync_scontrini(const TDate& dal, const TDate& al) { sync_mov(3, dal, al); }
void sync_doc(const TDate& dal, const TDate& al, int tipotestata, bool importadoc);
void sync_doc(const TDate& dal, const TDate& al, int tipotestata,const char* unitadefault, bool importadoc);
void sync_carscar(const TDate& dal, const TDate& al) { sync_mov(1, dal, al); }
void sync_generici(const TDate& dal, const TDate& al) { sync_mov(4, dal, al); }
void sync_clifo(int cfmask, const TDate& dal, const TDate& al);
void sync_listino(const TString& listino);
TToken_string & decode_presentazione(const char* IBAN);
public:
virtual bool create();
virtual void main_loop();
@ -1276,7 +1278,7 @@ void TImporta_sync::sync_corrisp(const TDate&, const TDate&)
}
}
void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata, bool importadoc)
void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata, const char* unitadefault, bool importadoc)
{
const TString8 codcausdef = ini_get_string(CONFIG_DITTA, "bs", MOVMAG_CODCAUS, "", 2);
TString str(255);
@ -1326,6 +1328,15 @@ void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata
if (tipocf != "C") // verificare
tipocf = "F";
TToken_string key = tipocf;
key.add(codcf);
const TRectype & clifor = cache().get(LF_CLIFO, key);
if (clifor.empty())
{
// eccezione su cliente inesistente in DSErrore errore=1
}
if (test_nd != test_doc)
// if (nd != num_doc)
{
@ -1371,6 +1382,17 @@ void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata
// inserire codice pagamento Es. BB02
doc->put(DOC_CODVAL, codval);
doc->put(DOC_CAMBIO, cambio);
doc->put(DOC_CODPAG, docs.get("CodPagamento_FP").as_string() );
doc->put(DOC_CODABIA, docs.get("ABI").as_string()); //banca di appoggio
doc->put(DOC_CODCABA, docs.get("CAB").as_string());
TToken_string bnpkey = decode_presentazione(docs.get("NostroContoCorr").as_string());
doc->put(DOC_CODABIP, bnpkey.get() ); //banca di presentazione
doc->put(DOC_CODCABP, bnpkey.get() );
doc->put(DOC_PROGBNP, bnpkey.get() ); //banca di presentazione
doc->put(DOC_ASPBENI1, asp.sleft(50));
doc->put(DOC_ASPBENI2, asp.smid(50));
doc->put(DOC_NCOLLI, ncolli);
@ -1412,7 +1434,12 @@ void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata
articolo.put(ANAMAG_DESCR, docs.get("DSRiga").as_string());
articolo.put(ANAMAG_CLASSDOG, docs.get("CodDogana").as_string());
TRectype& umart = articolo.new_row(LF_UMART);
umart.put(UMART_UM, docs.get("CodUntMis").as_string());
TString unitamisura = docs.get("CodUntMis").as_string();
if (unitamisura.blank())
{
unitamisura = unitadefault;
}
umart.put(UMART_UM, unitamisura);
umart.put(UMART_FC, 1);
articolo.write();
}
@ -1440,6 +1467,11 @@ void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata
}
rdoc.put(RDOC_CODMAG, docs.get("CodMagazzino").as_string().left(5));
rdoc.put(RDOC_CODMAGC, docs.get("CodMagazDest").as_string().left(5));
TString unitamisura = docs.get("CodUntMis").as_string();
if (unitamisura.blank())
{
unitamisura = unitadefault;
}
rdoc.put(RDOC_UMQTA, docs.get("CodUntMis").as_string());
rdoc.put(RDOC_QTA, docs.get("Quantita").as_real());
rdoc.put(RDOC_PREZZO, docs.get("PrzNettoNeg").as_real()); // o PrzNettoValuta ??
@ -1467,6 +1499,7 @@ void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata
rdoc.put(RDOC_SCONTO, sconto);
*/
rdoc.put(RDOC_CODIVA, docs.get("CodIva").as_string());
}
else
{
@ -1496,12 +1529,43 @@ void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata
}
}
TToken_string & TImporta_sync::decode_presentazione(const char*IBAN)
{
TToken_string & key = get_tmp_string(20);
if (IBAN && *IBAN)
{
if (!_banche_pres_loaded)
{
TCursor cur(new TRelation ("BNP"));
const int items = cur.items();
for (cur = 0L; cur.pos() < items; ++cur)
{
const TString codtab = cur.curr().get("CODTAB");
const TString iban = cur.curr().get("S3");
TToken_string bankey = codtab.left(5);
bankey.add(codtab.mid(5,5));
bankey.add(codtab.mid(10));
_banche_pres.add(iban,bankey);
}
_banche_pres_loaded = true;
}
TToken_string *keyfound = (TToken_string *)_banche_pres.objptr(IBAN);
if (keyfound != nullptr)
key = *keyfound;
}
return key;
}
bool TImporta_sync::create()
{
_dsn = ini_get_string(CONFIG_DITTA, "bs", "DSN", "BEESTORE");
_sqlog = ini_get_string(CONFIG_DITTA, "bs", "Log", "");
_usr = ini_get_string(CONFIG_DITTA, "bs", "USR", "BEESTORE");
_psw = decode(ini_get_string(CONFIG_DITTA, "bs", "PSW", "BEESTORE"));
_banche_pres_loaded = false;
if (_dsn.full())
{
@ -1564,7 +1628,7 @@ void TImporta_sync::main_loop()
if (mask.get_bool("SyncCorr"))
sync_corrisp(dal, al);
if (mask.get_bool("SyncDoc"))
sync_doc(dal, al, mask.get_int(F_TIPODOC), importa_artdoc);
sync_doc(dal, al, mask.get_int(F_TIPODOC), mask.get(F_UNITADEFAULT), importa_artdoc);
if (mask.get_bool("SyncCarScar"))
sync_carscar(dal, al);

View File

@ -23,6 +23,7 @@
#define F_IMPPARTDOC 124
#define F_CANCART 125
#define F_TIPODOC 126
#define F_UNITADEFAULT 127
#define F_C_CARSCAR 201
#define F_D_CARSCAR 202

View File

@ -151,7 +151,7 @@ ENDPAGE
PAGE "Parametri" 0 2 0 0
GROUPBOX DLG_NULL 78 3
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 1 "@bParametri"
END
@ -164,6 +164,13 @@ BEGIN
MESSAGE FALSE ENABLE,F_CANCART|ENABLE,F_ART
END
BOOLEAN F_UNITADEFAULT
BEGIN
PROMPT 2 3 "Unitŕ di Default"
FIELD SyncUNITADEFAULT
END
BOOLEAN F_CANCART
BEGIN
PROMPT 40 2 "Elimina Articoli Sospesi"
@ -172,12 +179,12 @@ END
GROUPBOX DLG_NULL 78 6
BEGIN
PROMPT 1 4 "@bMovimenti"
PROMPT 1 5 "@bMovimenti"
END
STRING F_C_CARSCAR 4
BEGIN
PROMPT 2 5 "Causale magazzino car./scar. "
PROMPT 2 6 "Causale magazzino car./scar. "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_CARSCAR
DISPLAY "Codice" CODTAB
@ -191,13 +198,13 @@ END
STRING F_D_CARSCAR 50 36
BEGIN
PROMPT 40 5 ""
PROMPT 40 6 ""
FLAGS "D"
END
STRING F_C_DOCUMENTI 4
BEGIN
PROMPT 2 6 "Causale magazzino documenti "
PROMPT 2 7 "Causale magazzino documenti "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_DOCUMENTI
DISPLAY "Codice" CODTAB
@ -211,13 +218,13 @@ END
STRING F_D_DOCUMENTI 50 36
BEGIN
PROMPT 40 6 ""
PROMPT 40 7 ""
FLAGS "D"
END
STRING F_C_SCONTRINI 4
BEGIN
PROMPT 2 7 "Causale magazzino scontrini "
PROMPT 2 8 "Causale magazzino scontrini "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_SCONTRINI
DISPLAY "Codice" CODTAB
@ -231,13 +238,13 @@ END
STRING F_D_SCONTRINI 50 36
BEGIN
PROMPT 40 7 ""
PROMPT 40 8 ""
FLAGS "D"
END
STRING F_C_GENERICI 4
BEGIN
PROMPT 2 8 "Causale magazzino mov.generici "
PROMPT 2 9 "Causale magazzino mov.generici "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_GENERICI
DISPLAY "Codice" CODTAB
@ -251,18 +258,18 @@ END
STRING F_D_GENERICI 50 36
BEGIN
PROMPT 40 8 ""
PROMPT 40 9 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 10 "@bCorrispettivi"
PROMPT 1 11 "@bCorrispettivi"
END
STRING F_C_CORRISPETTIVI 4
BEGIN
PROMPT 2 11 "Causale contabile "
PROMPT 2 12 "Causale contabile "
USE LF_CAUSALI SELECT TIPODOC="CR"
INPUT CODCAUS F_C_CORRISPETTIVI
DISPLAY "Codice" CODCAUS
@ -276,7 +283,7 @@ END
STRING F_D_CORRISPETTIVI 50 36
BEGIN
PROMPT 40 11 ""
PROMPT 40 12 ""
FLAGS "D"
END