Patch level : 12.0 1056

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

Articolo new da riga tietmovmag
This commit is contained in:
Francesco_Fucarino 2021-04-21 18:37:35 +02:00
parent b3cc2229a8
commit f92e687157
4 changed files with 99 additions and 213 deletions

View File

@ -6,19 +6,16 @@
#include <reputils.h>
#include <tabutil.h>
#include <utility.h>
#include "../mg/mglib.h"
#include "../cg/cglib.h"
#include "../ve/velib.h"
#include <doc.h>
#include <rdoc.h>
#include "bs0.h"
#include "bs0500a.h"
#include "../fe/felib.h"
#include "../ve/condv.h"
#include "../ve/rcondv.h"
#include <comuni.h>
#include <clifo.h>
#include <cfven.h>
@ -87,7 +84,7 @@ public:
TMask_field* f = find_by_fieldname(fld); return TDate(f ? f->get() : EMPTY_STRING);
}
TImporta_mask() : TAutomask("bs0500a") { autoload(); }
TImporta_mask() : TAutomask("bs0500a") { autoload(); }
~TImporta_mask() { autosave(); }
};
@ -131,8 +128,16 @@ void TImporta_mask::autoload()
FOR_EACH_MASK_FIELD(*this, i, f)
{
const TFieldref* fr = f->field();
if (fr != NULL)
f->set(ini_get_string(CONFIG_DITTA, "bs", fr->name()));
if (fr != NULL)
{
const TString & name = fr->name();
if ( (name == "SyncIMPPARTDOC") || (name == "SyncDoc") )
f->set(ini_get_bool(CONFIG_DITTA, "bs", name,true) ? "X" : " ");
else
f->set(ini_get_string(CONFIG_DITTA, "bs", name));
}
}
}
@ -192,12 +197,11 @@ 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);
void sync_doc(const TDate& dal, const TDate& al, int tipotestata, 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);
void sync_fatbol(const TDate& dal, const TDate& al);
public:
virtual bool create();
@ -942,9 +946,10 @@ void TImporta_sync::sync_clifo(int cfmask, const TDate& dal, const TDate& al)
TString str(255);
TODBC_recordset clifo(str);
clifo.connect(_dsn, _usr, _psw);
/*
str << "DELETE FROM tieAnagCFP WHERE Origine=1;";
clifo.exec(str); // Elimina tutte le anagrafiche importate da BeeStore
*/
save_clifo(cfmask, dal, al);
}
@ -1134,154 +1139,6 @@ void TImporta_sync::add_rmov(TMovimentoPN& mov, const real& importo, const TCaus
}
}
void TImporta_sync::sync_doc(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 NumMov,NumRiga";
TODBC_recordset docs(str);
docs.connect(_dsn, _usr, _psw);
TProgress_monitor pi(docs.items(), str);
long num_doc = -1, nd, codcf;
TString4 tipocf;
TDocumento* doc = NULL;
for (bool ok = docs.move_first(); ok; ok = docs.move_next())
{
TToken_string test(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 (nd != num_doc)
{
if (num_doc > 0 && !save_and_delete_doc(doc))
break;
num_doc = nd;
const TDate datadoc = docs.get("DataMov").as_date();
TString8 numdoc = docs.get("TipoDocCE").as_string();
TString8 tipodoc = docs.get("TipoDocCE").as_string();
TTipo_documento tipo(tipodoc);
const TString8 codcaus = tipo.caus_mov().blank() ? codcausdef : tipo.caus_mov();
doc = new TDocumento();
doc->put(DOC_ANNO, datadoc.year());
doc->put(DOC_DATADOC, datadoc);
doc->put(DOC_NDOC, nd);
doc->put(DOC_PROVV, "D");
doc->put(DOC_CODNUM, numdoc);
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();
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);
}
const int tipoart = docs.get("TipoArticolo").as_int();
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)
{
if (cache().get("SPP", codart).not_empty())
rdoc.put(RDOC_CODARTMAG, codart);
}
else
{
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("PrzNettoSede").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
}
void TImporta_sync::sync_corrisp(const TDate&, const TDate&)
{
const TString8 codcaus = ini_get_string(CONFIG_DITTA, "bs", "CODCAUSC");
@ -1419,20 +1276,11 @@ void TImporta_sync::sync_corrisp(const TDate&, const TDate&)
}
}
void TImporta_sync::sync_fatbol(const TDate& dal, const TDate& al)
void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata, bool importadoc)
{
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
str << "SELECT tieDMovMag.*,tieTBolFat.* FROM tieDMovMag,tieTBolFat WHERE tieDMovMag.Origine=1 AND tieDMovMag.TipoTestata=" <<tipotestata<< " AND tieDMovMag.CodTestata=tieTBolFat.Cod_PK"; // verificare
if (dal.ok() || al.ok())
{
str << " AND DataMov";
@ -1498,7 +1346,11 @@ void TImporta_sync::sync_fatbol(const TDate& dal, const TDate& al)
TString8 tipodoc = docs.get("TipoDocCE").as_string();
TString origine_dc = docs.get("Origine").as_string();
if (tipodoc.not_empty() && (tipodoc != " ")) {
if (((tipodoc.not_empty()) && (tipodoc != " ")) )
//&& ((docs.get("CodIva").as_string().not_empty() && (docs.get("CodIva").as_string() != " "))))
{
TTipo_documento tipo(tipodoc);
const TString8 codcaus = tipo.caus_mov().blank() ? codcausdef : tipo.caus_mov();
@ -1540,15 +1392,31 @@ void TImporta_sync::sync_fatbol(const TDate& dal, const TDate& al)
}
}
TString8 tipodoc = docs.get("TipoDocCE").as_string();
if (tipodoc.not_empty() && (tipodoc != " "))
{
if ( ( (tipodoc.not_empty() ) && (tipodoc != " ") ) )
//&& ( (docs.get("CodIva").as_string().not_empty() && (docs.get("CodIva").as_string() != " ") ) ) )
{
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 (importadoc && tipoart == 0)
{
rdoc.put(RDOC_CODARTMAG, codart);
rdoc.put(RDOC_CHECKED, "X");
if (cache().get(LF_ANAMAG, codart).empty())
{
TArticolo articolo;
articolo.put(ANAMAG_CODART, codart);
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());
umart.put(UMART_FC, 1);
articolo.write();
}
}
if (tipoart == 2) //righe libere
{
if (cache().get("SPP", codart).not_empty())
@ -1666,6 +1534,7 @@ void TImporta_sync::main_loop()
const TDate dal = mask.get_date("SyncDateFrom");
const TDate al = mask.get_date("SyncDateTo");
const bool importa_artdoc = mask.get_bool("SyncIMPPARTDOC");
if (mask.get_bool("SyncUMS"))
sync_ums(dal, al);
@ -1695,14 +1564,12 @@ void TImporta_sync::main_loop()
if (mask.get_bool("SyncCorr"))
sync_corrisp(dal, al);
if (mask.get_bool("SyncDoc"))
sync_doc(dal, al);
sync_doc(dal, al, mask.get_int(F_TIPODOC), importa_artdoc);
if (mask.get_bool("SyncCarScar"))
sync_carscar(dal, al);
if (mask.get_bool("SyncGenerici"))
sync_generici(dal, al);
if (mask.get_bool("SyncFatBol"))
sync_fatbol(dal, al);
_log->preview();
delete _log;
_log = NULL;

View File

@ -17,8 +17,12 @@
#define F_FORNITORI 116
#define F_BARCODE 117
#define F_FATBOL 121
#define F_CANCART 122
#define F_FATTURE 121
#define F_BOLLE 122
#define F_ORDINI 123
#define F_IMPPARTDOC 124
#define F_CANCART 125
#define F_TIPODOC 126
#define F_C_CARSCAR 201
#define F_D_CARSCAR 202

View File

@ -4,7 +4,7 @@ TOOLBAR "topbar" 0 0 0 2
#include <elabar.h>
ENDPAGE
PAGE "Sincronizzazione Bee Store" 0 2 0 0
PAGE "Importazioni da BeeStore" 0 2 0 0
GROUPBOX DLG_NULL 78 9
BEGIN
@ -111,19 +111,26 @@ GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 10 "@bDocumenti"
END
BOOLEAN F_FATBOL
BEGIN
PROMPT 2 11 "Importa le Fatture"
FIELD SyncFatBol
END
BOOLEAN F_DOCUMENTI
BEGIN
PROMPT 2 12 "Documenti "
PROMPT 2 11 "Documenti "
FIELD SyncDoc
MESSAGE FALSE CLEAR,F_TIPODOC
MESSAGE TRUE ENABLE,F_TIPODOC
END
GROUPBOX DLG_NULL 78 4
LISTBOX F_TIPODOC 1 15
BEGIN
PROMPT 2 12 "Tipo Documento"
ITEM "2|Fatture"
ITEM "6|Note di credito"
ITEM "1|Bolle"
ITEM "9|Ordini"
FIELD SyncTIPODOC
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 14 "@bFiltri"
END
@ -144,14 +151,33 @@ ENDPAGE
PAGE "Parametri" 0 2 0 0
GROUPBOX DLG_NULL 78 7
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 1 "@bMovimenti"
PROMPT 1 1 "@bParametri"
END
BOOLEAN F_IMPPARTDOC
BEGIN
PROMPT 2 2 "Importazione Articoli da Documenti"
FIELD SyncIMPPARTDOC
MESSAGE TRUE CLEAR,F_CANCART|CLEAR,F_ART
MESSAGE FALSE ENABLE,F_CANCART|ENABLE,F_ART
END
BOOLEAN F_CANCART
BEGIN
PROMPT 40 2 "Elimina Articoli Sospesi"
FIELD SyncCANCART
END
GROUPBOX DLG_NULL 78 6
BEGIN
PROMPT 1 4 "@bMovimenti"
END
STRING F_C_CARSCAR 4
BEGIN
PROMPT 2 2 "Causale magazzino car./scar. "
PROMPT 2 5 "Causale magazzino car./scar. "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_CARSCAR
DISPLAY "Codice" CODTAB
@ -165,13 +191,13 @@ END
STRING F_D_CARSCAR 50 36
BEGIN
PROMPT 40 2 ""
PROMPT 40 5 ""
FLAGS "D"
END
STRING F_C_DOCUMENTI 4
BEGIN
PROMPT 2 3 "Causale magazzino documenti "
PROMPT 2 6 "Causale magazzino documenti "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_DOCUMENTI
DISPLAY "Codice" CODTAB
@ -185,13 +211,13 @@ END
STRING F_D_DOCUMENTI 50 36
BEGIN
PROMPT 40 3 ""
PROMPT 40 6 ""
FLAGS "D"
END
STRING F_C_SCONTRINI 4
BEGIN
PROMPT 2 4 "Causale magazzino scontrini "
PROMPT 2 7 "Causale magazzino scontrini "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_SCONTRINI
DISPLAY "Codice" CODTAB
@ -205,13 +231,13 @@ END
STRING F_D_SCONTRINI 50 36
BEGIN
PROMPT 40 4 ""
PROMPT 40 7 ""
FLAGS "D"
END
STRING F_C_GENERICI 4
BEGIN
PROMPT 2 5 "Causale magazzino mov.generici "
PROMPT 2 8 "Causale magazzino mov.generici "
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB F_C_GENERICI
DISPLAY "Codice" CODTAB
@ -225,18 +251,18 @@ END
STRING F_D_GENERICI 50 36
BEGIN
PROMPT 40 5 ""
PROMPT 40 8 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 78 4
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 8 "@bCorrispettivi"
PROMPT 1 10 "@bCorrispettivi"
END
STRING F_C_CORRISPETTIVI 4
BEGIN
PROMPT 2 9 "Causale contabile "
PROMPT 2 11 "Causale contabile "
USE LF_CAUSALI SELECT TIPODOC="CR"
INPUT CODCAUS F_C_CORRISPETTIVI
DISPLAY "Codice" CODCAUS
@ -250,21 +276,10 @@ END
STRING F_D_CORRISPETTIVI 50 36
BEGIN
PROMPT 40 9 ""
PROMPT 40 11 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 12 "@bParametri"
END
BOOLEAN F_CANCART
BEGIN
PROMPT 2 13 "Cancellazione degli Articoli in sospeso"
FIELD SyncCANCART
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 = "Importazione Fatture", "bs0 -4", "F", 9015
Item_03 = "Importazione", "bs0 -4", "F", 9015
Item_04 = "SKNET Importer", "bs0 -2", "F", 9015
Item_05 = "Tabelle di conversione", [BSMENU_002]