Patch level : 12.0 1056

Files correlati     :  bs.exe bs0200.uml/cpp creazione bs0500a.h bs0500a.uml bs0500.cpp

Ora separata completamente con ripristino per clienti usanti old version (chiastra).
Aggiunte nuove unit necessarie e punto di menù
This commit is contained in:
Francesco_Fucarino 2021-04-21 10:11:23 +02:00
parent fbc375cfdc
commit 51f32393e7
11 changed files with 2072 additions and 257 deletions

View File

@ -182,6 +182,7 @@
<ClCompile Include="..\src\bs\bs0100.cpp" />
<ClCompile Include="..\src\bs\bs0200.cpp" />
<ClCompile Include="..\src\bs\bs0300.cpp" />
<ClCompile Include="..\src\bs\bs0500.cpp" />
<ClCompile Include="..\src\bs\bsutility.cpp" />
<ClCompile Include="..\src\cg\cglib01.cpp" />
<ClCompile Include="..\src\cg\cgsaldac.cpp" />
@ -193,6 +194,7 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
</MskCompiler>
<MskCompiler Include="..\src\bs\bs0300a.uml" />
<MskCompiler Include="..\src\bs\bs0500a.uml" />
<MskCompiler Include="..\src\bs\bstbski.uml" />
</ItemGroup>
<ItemGroup>
@ -204,6 +206,7 @@
<ClInclude Include="..\src\bs\bs0200a.h" />
<ClInclude Include="..\src\bs\bs0300a.h" />
<ClInclude Include="..\src\bs\bs0300b.h" />
<ClInclude Include="..\src\bs\bs0500a.h" />
<ClInclude Include="..\src\bs\bsutility.h" />
<ClInclude Include="..\src\bs\bstbski.h" />
<ClInclude Include="..\src\fe\felib.h" />

View File

@ -50,6 +50,9 @@
<ClCompile Include="..\src\cg\cglib01.cpp">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="..\src\bs\bs0500.cpp">
<Filter>Sources</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<MenCompiler Include="..\src\bs\bsmenu.men">
@ -69,6 +72,9 @@
<MskCompiler Include="..\src\bs\bstbski.uml">
<Filter>Masks</Filter>
</MskCompiler>
<MskCompiler Include="..\src\bs\bs0500a.uml">
<Filter>Masks</Filter>
</MskCompiler>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\fe\felib.h">
@ -95,6 +101,9 @@
<ClInclude Include="..\src\bs\bs0300b.h">
<Filter>Headers</Filter>
</ClInclude>
<ClInclude Include="..\src\bs\bs0500a.h">
<Filter>Headers</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="campo.rc" />

View File

@ -9,6 +9,7 @@ int main(int argc, char** argv)
case 1: bs0200(argc, argv); break; // Importazioni Beestore
case 2: bs0300(argc, argv); break; // Importazione da SKNET
case 3: bs0400(argc, argv); break; // Tabelle di transazione
case 4: bs0500(argc, argv); break; // Importazioni BeeStore Inmaven
default: bs0100(argc, argv); break; // Trasferimento Beestore Impostazione
}
return 0;

View File

@ -2,3 +2,4 @@ int bs0100(int argc, char* argv[]);
int bs0200(int argc, char* argv[]);
int bs0300(int argc, char* argv[]);
int bs0400(int argc, char* argv[]);
int bs0500(int argc, char* argv[]);

View File

@ -191,7 +191,6 @@ protected:
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);
void sync_fatbol(const TDate& dal, const TDate& al);
public:
virtual bool create();
@ -1409,199 +1408,6 @@ void TBeeStore_sync::sync_corrisp(const TDate&, const TDate&)
}
}
void TBeeStore_sync::sync_fatbol(const TDate& dal, const TDate& al)
{
const TString8 codcausdef = ini_get_string(CONFIG_DITTA, "bs", MOVMAG_CODCAUS, "", 2);
/*
if (codcausdef.blank())
{
_log->log(2, "Configurare parametri per movimenti Bee Store");
return;
}
*/
TString str(255);
str << "SELECT tieDMovMag.*,tieTBolFat.* FROM tieDMovMag,tieTBolFat WHERE tieDMovMag.Origine=1 AND tieDMovMag.TipoTestata=2 AND tieDMovMag.CodTestata=tieTBolFat.Cod_PK"; // verificare
if (dal.ok() || al.ok())
{
str << " AND DataMov";
if (dal.ok() && al.ok())
str << " BETWEEN " << date2sql(dal) << " AND " << date2sql(al);
else
{
if (dal.ok())
str << ">=" << date2sql(dal);
else
str << "<=" << date2sql(al);
}
}
str << "\nORDER BY CodTestata,NumRiga";
TODBC_recordset docs(str);
docs.connect(_dsn, _usr, _psw);
TProgress_monitor pi(docs.items(), str);
long num_doc = -1, nd, codcf;
TString test_doc = "", test_nd;
TString4 tipocf;
TDocumento* doc = nullptr;
int contatore = 0;
int eccezioni_errori = 0;
TString codpk = "";
for (bool ok = docs.move_first(); ok; ok = docs.move_next())
{
TToken_string test(docs.get("CodTestata").as_string(), '\\');
test_nd = (docs.get("CodTestata").as_string());
nd = atol(test.get());
TString wrk = docs.get("CodCliente").as_string();
while (wrk[0] >= 'A')
wrk.ltrim(1);
codcf = atol(wrk);
tipocf = docs.get("TipoIntestatario").as_string();
if (tipocf != "C") // verificare
tipocf = "F";
if (test_nd != test_doc)
// if (nd != num_doc)
{
if (num_doc > 0 && !save_and_delete_doc(doc))
break;
/*
if (test_doc != "")
if (test_doc != test_nd)
save_and_delete_doc(doc);
*/
num_doc = nd;
test_doc = test_nd;
TString tre = test_doc.right(3);
const TDate datadoc = docs.get("DataMov").as_date();
TString cod_pk= docs.get("Cod_PK").as_string();
TString8 numdoc = docs.get("NumDoc").as_string();
TString8 tipodoc = docs.get("TipoDocCE").as_string();
TString origine_dc = docs.get("Origine").as_string();
if (tipodoc.not_empty() && (tipodoc!=" ")) {
TTipo_documento tipo(tipodoc);
const TString8 codcaus = tipo.caus_mov().blank() ? codcausdef : tipo.caus_mov();
//doc = new TDocumento('D', datadoc.year(), numdoc, nd); //meglio usare TDocumento(char provv, int anno, const char* codnum, long numdoc);
doc = new TDocumento('D', datadoc.year(), tipodoc, strtol(numdoc, nullptr, 0));
doc->put(DOC_DATADOC, datadoc);
doc->put(DOC_TIPODOC, tipodoc);
doc->put(DOC_TIPOCF, tipocf);
doc->put(DOC_CODCF, codcf);
doc->cli2doc();
const TString8 codval = docs.get("CodValuta").as_string();
const real cambio = docs.get("CambioValuta").as_real();
const TString asp = docs.get("AspettoBeni").as_string();
const int ncolli = docs.get("NumeroColli").as_int();
// inserire codice pagamento Es. BB02
doc->put(DOC_CODVAL, codval);
doc->put(DOC_CAMBIO, cambio);
doc->put(DOC_ASPBENI1, asp.sleft(50));
doc->put(DOC_ASPBENI2, asp.smid(50));
doc->put(DOC_NCOLLI, ncolli);
doc->put(DOC_CAUSMAG, codcaus);
contatore++;
}
else
{
eccezioni_errori++;
codpk = cod_pk;
TString dserrore = docs.get("DSErrore").as_string();
dserrore << " TipoDocCe assente o invalido";
TString update_str = "";
update_str << "UPDATE tieTBolFat \n SET Errore=1, DSErrore = '" << dserrore << "' \n WHERE cod_pk= '" << codpk << "' ";
TODBC_recordset docs(update_str);
docs.connect(_dsn, _usr, _psw);
docs.exec(update_str);
}
}
TString8 tipodoc = docs.get("TipoDocCE").as_string();
if (tipodoc.not_empty() && (tipodoc != " ")) {
const int tipoart = docs.get("TipoArticolo").as_int();
// inutile per noi TString4 tiporiga = tipoart == 2 ? "04" : "02";
TRectype& rdoc = doc->new_row("01");
const TString80 codart = docs.get("CodArticolo").as_string();
rdoc.put(RDOC_CODART, codart);
if (tipoart == 2) //righe libere
{
if (cache().get("SPP", codart).not_empty())
rdoc.put(RDOC_CODARTMAG, codart);
}
else //spese servizi e articoli
{
if (cache().get(LF_ANAMAG, codart).not_empty())
rdoc.put(RDOC_CODARTMAG, codart);
}
rdoc.put(RDOC_CODARTMAG, codart);
//rdoc.check_row();
const TString descr = docs.get("DSRiga").as_string();
rdoc.put(RDOC_DESCR, descr.sleft(50));
if (descr.len() > 50)
{
rdoc.put(RDOC_DESCLUNGA, "X");
rdoc.put(RDOC_DESCEST, descr.smid(50));
}
rdoc.put(RDOC_CODMAG, docs.get("CodMagazzino").as_string().left(5));
rdoc.put(RDOC_CODMAGC, docs.get("CodMagazDest").as_string().left(5));
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 ??
/*
real valsconto1(docs.get("Sconto1").as_real());
real valsconto2(docs.get("Sconto2").as_real());
real valsconto3(docs.get("Sconto3").as_real());
TString80 sconto;
if (valsconto1 != ZERO)
sconto << valsconto1.stringa(6, 2);
if (valsconto2 != ZERO)
{
if (sconto.full())
sconto << "+";
sconto << valsconto2.stringa(6, 2);
}
if (valsconto3 != ZERO)
{
if (sconto.full())
sconto << "+";
sconto << valsconto3.stringa(6, 2);
}
rdoc.put(RDOC_SCONTO, sconto);
*/
rdoc.put(RDOC_CODIVA, docs.get("CodIva").as_string());
}
if (!pi.add_status())
break;
}
save_and_delete_doc(doc); // Salva ultimo documento in sospeso
str.cut(0);
str.format(TR("Documenti importati %ld record in %s"), contatore, "tieTBolFat");
_log->log(0, "");
_log->log(0, str);
if (eccezioni_errori > 0)
{
str.cut(0);
str.format(TR("Errori in importazione %ld record in %s"), eccezioni_errori, "tieTBolFat");
_log->log(0, str);
}
}
bool TBeeStore_sync::create()
{
@ -1676,12 +1482,6 @@ void TBeeStore_sync::main_loop()
if (mask.get_bool("SyncGenerici"))
sync_generici(dal, al);
const TDate dalfat = mask.get_date("SyncDateFromF");
const TDate alfat = mask.get_date("SyncDateToF");
if (mask.get_bool("SyncFatBol"))
sync_fatbol(dalfat, alfat);
_log->preview();
delete _log;
_log = NULL;

View File

@ -17,12 +17,6 @@
#define F_FORNITORI 116
#define F_BARCODE 117
#define F_BBDAL 121
#define F_BBAL 122
#define F_FATBOL 123
#define F_FFDAL 124
#define F_FFAL 125
#define F_C_CARSCAR 201
#define F_D_CARSCAR 202
#define F_C_DOCUMENTI 203

View File

@ -132,55 +132,6 @@ END
ENDPAGE
PAGE "Import: Bolle/Fatture/Scontr." 0 2 0 0
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 1 "@bBolle"
END
DATE F_BBDAL
BEGIN
PROMPT 2 3 "Dalla data di modifica "
FIELD SyncDateFromB
END
DATE F_BBAL
BEGIN
PROMPT 42 3 " al "
FIELD SyncDateToB
END
BOOLEAN F_FATBOL
BEGIN
PROMPT 2 7 "Importa da BeeStore le Fatture"
FIELD SyncFatBol
END
DATE F_FFDAL
BEGIN
PROMPT 2 8 "Dalla data di modifica "
FIELD SyncDateFromF
END
DATE F_FFAL
BEGIN
PROMPT 42 8 " al "
FIELD SyncDateToF
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 6 "@bFatture"
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 11 "@bOrdini"
END
ENDPAGE
PAGE "Parametri" 0 2 0 0
GROUPBOX DLG_NULL 78 7

1722
src/bs/bs0500.cpp Normal file

File diff suppressed because it is too large Load Diff

36
src/bs/bs0500a.h Normal file
View File

@ -0,0 +1,36 @@
#define F_DAL 101
#define F_AL 102
#define F_UMS 103
#define F_IVA 104
#define F_LINEART 105
#define F_CATMER 106
#define F_ART 107
#define F_LIST 108
#define F_SCONTRINI 109
#define F_CORRISPETTIVI 110
#define F_DOCUMENTI 111
#define F_CARSCAR 112
#define F_GENERICI 113
#define F_VALUTE 114
#define F_CLIENTI 115
#define F_FORNITORI 116
#define F_BARCODE 117
#define F_BBDAL 121
#define F_BBAL 122
#define F_FATBOL 123
#define F_FFDAL 124
#define F_FFAL 125
#define F_C_CARSCAR 201
#define F_D_CARSCAR 202
#define F_C_DOCUMENTI 203
#define F_D_DOCUMENTI 204
#define F_C_SCONTRINI 205
#define F_D_SCONTRINI 206
#define F_C_GENERICI 207
#define F_D_GENERICI 208
#define F_C_CORRISPETTIVI 301
#define F_D_CORRISPETTIVI 302

298
src/bs/bs0500a.uml Normal file
View File

@ -0,0 +1,298 @@
#include "bs0500a.h"
TOOLBAR "topbar" 0 0 0 2
#include <elabar.h>
ENDPAGE
PAGE "Sincronizzazione Bee Store" 0 2 0 0
GROUPBOX DLG_NULL 78 13
BEGIN
PROMPT 1 1 "@bArchivi"
END
BOOLEAN F_UMS
BEGIN
PROMPT 2 2 "Unità di misura "
FIELD SyncUMS
END
BOOLEAN F_IVA
BEGIN
PROMPT 2 3 "Codici IVA "
FIELD SyncIVA
END
BOOLEAN F_LINEART
BEGIN
PROMPT 2 4 "Linee Articolo "
FIELD SyncLinee
END
BOOLEAN F_CATMER
BEGIN
PROMPT 2 5 "Categorie Merceologiche"
FIELD SyncCatMer
END
BOOLEAN F_ART
BEGIN
PROMPT 2 6 "Articoli "
FIELD SyncAnamag
END
STRING F_LIST 3
BEGIN
PROMPT 40 6 "Listino "
USE LF_CONDV
INPUT TIPO "L"
INPUT CATVEN ""
INPUT TIPOCF ""
INPUT CODCF ""
INPUT COD 148
DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR
DISPLAY "Valuta@5" CODVAL
DISPLAY "Inizio@10" VALIN
DISPLAY "Fine@10" VALFIN
OUTPUT 148 COD
FIELD SyncListino
END
BOOLEAN F_SCONTRINI
BEGIN
PROMPT 2 7 "Scontrini "
FIELD SyncScontr
END
BOOLEAN F_CORRISPETTIVI
BEGIN
PROMPT 2 8 "Corrispettivi "
FIELD SyncCorr
END
BOOLEAN F_DOCUMENTI
BEGIN
PROMPT 2 9 "Documenti "
FIELD SyncDoc
END
BOOLEAN F_CARSCAR
BEGIN
PROMPT 2 10 "Carichi/scarichi "
FIELD SyncCarScar
END
BOOLEAN F_GENERICI
BEGIN
PROMPT 2 11 "Mov.generici "
FIELD SyncGenerici
END
BOOLEAN F_VALUTE
BEGIN
PROMPT 40 2 "Valute"
FIELD SyncVAL
END
BOOLEAN F_CLIENTI
BEGIN
PROMPT 40 3 "Clienti"
FIELD SyncClienti
END
BOOLEAN F_FORNITORI
BEGIN
PROMPT 40 4 "Fornitori "
FIELD SyncFornitori
END
BOOLEAN F_BARCODE
BEGIN
PROMPT 40 5 "Codici a barre"
FIELD SyncBarCode
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 14 "@bFiltri"
END
DATE F_DAL
BEGIN
PROMPT 2 15 "Dalla data di modifica "
FIELD SyncDateFrom
END
DATE F_AL
BEGIN
PROMPT 42 15 " al "
FIELD SyncDateTo
END
ENDPAGE
PAGE "Import: Bolle/Fatture/Scontr." 0 2 0 0
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 1 "@bBolle"
END
DATE F_BBDAL
BEGIN
PROMPT 2 3 "Dalla data di modifica "
FIELD SyncDateFromB
END
DATE F_BBAL
BEGIN
PROMPT 42 3 " al "
FIELD SyncDateToB
END
BOOLEAN F_FATBOL
BEGIN
PROMPT 2 7 "Importa da BeeStore le Fatture"
FIELD SyncFatBol
END
DATE F_FFDAL
BEGIN
PROMPT 2 8 "Dalla data di modifica "
FIELD SyncDateFromF
END
DATE F_FFAL
BEGIN
PROMPT 42 8 " al "
FIELD SyncDateToF
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 6 "@bFatture"
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 11 "@bOrdini"
END
ENDPAGE
PAGE "Parametri" 0 2 0 0
GROUPBOX DLG_NULL 78 7
BEGIN
PROMPT 1 1 "@bMovimenti"
END
STRING F_C_CARSCAR 4
BEGIN
PROMPT 2 2 "Causale magazzino car./scar. "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_CARSCAR
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_C_CARSCAR CODTAB
OUTPUT F_D_CARSCAR S0
CHECKTYPE NORMAL
FIELD CODCAUS(1)
ADD RUN mg0 -0 %CAU
END
STRING F_D_CARSCAR 50 36
BEGIN
PROMPT 40 2 ""
FLAGS "D"
END
STRING F_C_DOCUMENTI 4
BEGIN
PROMPT 2 3 "Causale magazzino documenti "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_DOCUMENTI
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_C_DOCUMENTI CODTAB
OUTPUT F_D_DOCUMENTI S0
CHECKTYPE NORMAL
FIELD CODCAUS(2)
ADD RUN mg0 -0 %CAU
END
STRING F_D_DOCUMENTI 50 36
BEGIN
PROMPT 40 3 ""
FLAGS "D"
END
STRING F_C_SCONTRINI 4
BEGIN
PROMPT 2 4 "Causale magazzino scontrini "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_SCONTRINI
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_C_SCONTRINI CODTAB
OUTPUT F_D_SCONTRINI S0
CHECKTYPE NORMAL
FIELD CODCAUS(3)
ADD RUN mg0 -0 %CAU
END
STRING F_D_SCONTRINI 50 36
BEGIN
PROMPT 40 4 ""
FLAGS "D"
END
STRING F_C_GENERICI 4
BEGIN
PROMPT 2 5 "Causale magazzino mov.generici "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_GENERICI
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_C_GENERICI CODTAB
OUTPUT F_D_GENERICI S0
CHECKTYPE NORMAL
FIELD CODCAUS(4)
ADD RUN mg0 -0 %CAU
END
STRING F_D_GENERICI 50 36
BEGIN
PROMPT 40 5 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 8 "@bCorrispettivi"
END
STRING F_C_CORRISPETTIVI 4
BEGIN
PROMPT 2 9 "Causale contabile "
USE LF_CAUSALI SELECT TIPODOC="CR"
INPUT CODCAUS F_C_CORRISPETTIVI
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
OUTPUT F_C_CORRISPETTIVI CODCAUS
OUTPUT F_D_CORRISPETTIVI DESCR
CHECKTYPE NORMAL
FIELD CODCAUSC
ADD RUN cg0 -4
END
STRING F_D_CORRISPETTIVI 50 36
BEGIN
PROMPT 40 9 ""
FLAGS "D"
END
ENDPAGE
ENDMASK

View File

@ -5,7 +5,7 @@ Module = bs
Flags = "F"
Item_01 = "Configurazione", "bs0 -0", "F", 9015
Item_02 = "Sincronizzazione", "bs0 -1", "F", 9015
Item_03 = "BeeStore Importazione Fatture", "bs0 -1", "F", 9015
Item_03 = "Importazione Fatture", "bs0 -4", "F", 9015
Item_04 = "SKNET Importer", "bs0 -2", "F", 9015
Item_05 = "Tabelle di conversione", [BSMENU_002]