Corretta importazione CBA
git-svn-id: svn://10.65.10.50/branches/R_10_00@22996 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
d7420fdb0c
commit
0b2bcfe6c9
166
ps/ps0430400.cpp
166
ps/ps0430400.cpp
@ -256,6 +256,7 @@ bool TImport_app::importa_clienti(const TFilename& fname, const TString& cdc, TL
|
|||||||
TString rs1 = cli.get(6).as_string(); rs1.trim();
|
TString rs1 = cli.get(6).as_string(); rs1.trim();
|
||||||
TString rs2 = cli.get(7).as_string(); rs2.trim();
|
TString rs2 = cli.get(7).as_string(); rs2.trim();
|
||||||
|
|
||||||
|
str.cut(0);
|
||||||
if (rs2.blank())
|
if (rs2.blank())
|
||||||
{
|
{
|
||||||
const int spc = rs1.find(' ');
|
const int spc = rs1.find(' ');
|
||||||
@ -265,8 +266,7 @@ bool TImport_app::importa_clienti(const TFilename& fname, const TString& cdc, TL
|
|||||||
str.left_just(30);
|
str.left_just(30);
|
||||||
str << rs1.mid(spc+1);
|
str << rs1.mid(spc+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str.empty())
|
if (str.empty())
|
||||||
{
|
{
|
||||||
str << rs1 << ' ' << rs2;
|
str << rs1 << ' ' << rs2;
|
||||||
@ -417,6 +417,47 @@ const TString& TImport_app::get_periodo(const TCBA_recset& fat) const
|
|||||||
return get_tmp_string() = periodo;
|
return get_tmp_string() = periodo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool save_doc(TDocumento& doc, long& ndocs, long& mindoc, long& maxdoc, TLog_report& log)
|
||||||
|
{
|
||||||
|
const int err = doc.write();
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
ndocs++;
|
||||||
|
maxdoc = doc.get_long(DOC_NDOC);
|
||||||
|
if (ndocs == 1)
|
||||||
|
mindoc = maxdoc;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString str;
|
||||||
|
str.format("Impossibile registrare il documento %s/%ld",
|
||||||
|
(const char*)doc.get(DOC_CODNUM), maxdoc+1);
|
||||||
|
log.log(2, str);
|
||||||
|
}
|
||||||
|
return err == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void save_rdoc_desc(const TString& desc, TRiga_documento& rdoc)
|
||||||
|
{
|
||||||
|
if (desc.len() > 50)
|
||||||
|
{
|
||||||
|
TParagraph_string p(desc, 50);
|
||||||
|
rdoc.put(RDOC_DESCR, p.get());
|
||||||
|
const int sep = p.find(p.separator());
|
||||||
|
if (sep > 0)
|
||||||
|
{
|
||||||
|
rdoc.put(RDOC_DESCLUNGA, "X");
|
||||||
|
TString tmp = p.mid(sep+1);
|
||||||
|
tmp.replace(p.separator(), ' ');
|
||||||
|
tmp.strip_double_spaces();
|
||||||
|
tmp.insert("\n");
|
||||||
|
rdoc.put(RDOC_DESCEST, tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
rdoc.put(RDOC_DESCR, desc);
|
||||||
|
}
|
||||||
|
|
||||||
bool TImport_app::importa_fatture(const TFilename& fname, const TString& codnum, const TString& cdc, TLog_report& log) const
|
bool TImport_app::importa_fatture(const TFilename& fname, const TString& codnum, const TString& cdc, TLog_report& log) const
|
||||||
{
|
{
|
||||||
TString str = TR("Importazione documenti");
|
TString str = TR("Importazione documenti");
|
||||||
@ -438,6 +479,8 @@ bool TImport_app::importa_fatture(const TFilename& fname, const TString& codnum,
|
|||||||
TString periodo;
|
TString periodo;
|
||||||
TToken_string ospiti(256, '@');
|
TToken_string ospiti(256, '@');
|
||||||
|
|
||||||
|
TDocumento* doc = NULL;
|
||||||
|
|
||||||
TProgind pi(fat.items(), str);
|
TProgind pi(fat.items(), str);
|
||||||
for (bool ok = fat.move_first(); ok && done; ok = fat.move_next())
|
for (bool ok = fat.move_first(); ok && done; ok = fat.move_next())
|
||||||
{
|
{
|
||||||
@ -449,6 +492,13 @@ bool TImport_app::importa_fatture(const TFilename& fname, const TString& codnum,
|
|||||||
|
|
||||||
if (tipo == 'T')
|
if (tipo == 'T')
|
||||||
{
|
{
|
||||||
|
if (doc != NULL)
|
||||||
|
{
|
||||||
|
save_doc(*doc, ndocs, mindoc, maxdoc, log);
|
||||||
|
delete doc;
|
||||||
|
doc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
TString80 cofi_paiv = fat.get(14).as_string();
|
TString80 cofi_paiv = fat.get(14).as_string();
|
||||||
cofi_paiv.trim(); cofi_paiv.upper();
|
cofi_paiv.trim(); cofi_paiv.upper();
|
||||||
codcf = find_clifo(cofi_paiv, clifo);
|
codcf = find_clifo(cofi_paiv, clifo);
|
||||||
@ -496,46 +546,44 @@ bool TImport_app::importa_fatture(const TFilename& fname, const TString& codnum,
|
|||||||
str = codart; str << "|1";
|
str = codart; str << "|1";
|
||||||
const TString4 um = cache().get(LF_UMART, str, UMART_UM);
|
const TString4 um = cache().get(LF_UMART, str, UMART_UM);
|
||||||
|
|
||||||
TDocumento doc('D', datadoc.year(), codnum, 0);
|
if (doc == NULL)
|
||||||
|
|
||||||
doc.put(DOC_TIPOCF, 'C');
|
|
||||||
doc.put(DOC_CODCF, codcf);
|
|
||||||
doc.put(DOC_DATADOC, datadoc);
|
|
||||||
doc.put(DOC_DOC1, ndoc);
|
|
||||||
doc.put(DOC_CODPAG, codpag);
|
|
||||||
doc.put(DOC_STATO, 1);
|
|
||||||
doc.put(DOC_CODCMS, cdc);
|
|
||||||
|
|
||||||
TToken_string key;
|
|
||||||
key = "C";
|
|
||||||
key.add(codcf);
|
|
||||||
key.add("N");
|
|
||||||
TRecord_array nsban(key, LF_CFBAN);
|
|
||||||
if (nsban.rows() > 0)
|
|
||||||
{
|
{
|
||||||
const TRectype& rec = nsban.row(1);
|
doc = new TDocumento('D', datadoc.year(), codnum, 0);
|
||||||
doc.put(DOC_CODABIP, rec.get(CFBAN_ABI));
|
doc->put(DOC_TIPODOC, "F01");
|
||||||
doc.put(DOC_CODCABP, rec.get(CFBAN_CAB));
|
doc->put(DOC_STATO, 2); // Stampato
|
||||||
}
|
|
||||||
|
doc->put(DOC_TIPOCF, 'C');
|
||||||
|
doc->put(DOC_CODCF, codcf);
|
||||||
|
doc->put(DOC_DATADOC, datadoc);
|
||||||
|
doc->put(DOC_DOC1, ndoc);
|
||||||
|
doc->put(DOC_CODPAG, codpag);
|
||||||
|
doc->put(DOC_STATO, 1);
|
||||||
|
doc->put(DOC_CODCMS, cdc);
|
||||||
|
|
||||||
|
TToken_string key;
|
||||||
|
key = "C";
|
||||||
|
key.add(codcf);
|
||||||
|
key.add("N");
|
||||||
|
TRecord_array nsban(key, LF_CFBAN);
|
||||||
|
if (nsban.rows() > 0)
|
||||||
|
{
|
||||||
|
const TRectype& rec = nsban.row(1);
|
||||||
|
doc->put(DOC_CODABIP, rec.get(CFBAN_ABI));
|
||||||
|
doc->put(DOC_CODCABP, rec.get(CFBAN_CAB));
|
||||||
|
}
|
||||||
|
|
||||||
key.add("V", 2);
|
key.add("V", 2);
|
||||||
TRecord_array vsban(key, LF_CFBAN);
|
TRecord_array vsban(key, LF_CFBAN);
|
||||||
if (vsban.rows() > 0)
|
if (vsban.rows() > 0)
|
||||||
{
|
{
|
||||||
const TRectype& rec = vsban.row(1);
|
const TRectype& rec = vsban.row(1);
|
||||||
doc.put(DOC_CODABIA, rec.get(CFBAN_ABI));
|
doc->put(DOC_CODABIA, rec.get(CFBAN_ABI));
|
||||||
doc.put(DOC_CODCABA, rec.get(CFBAN_CAB));
|
doc->put(DOC_CODCABA, rec.get(CFBAN_CAB));
|
||||||
doc.put(DOC_IBAN, rec.get(CFBAN_IBAN));
|
doc->put(DOC_IBAN, rec.get(CFBAN_IBAN));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doc.rows() == 0) // Nuovo documento
|
TRiga_documento& rdoc = doc->new_row("01");
|
||||||
{
|
|
||||||
doc.put(DOC_TIPODOC, "F01");
|
|
||||||
doc.put(DOC_STATO, 2);
|
|
||||||
doc.new_row("01");
|
|
||||||
}
|
|
||||||
|
|
||||||
TRiga_documento& rdoc = doc[doc.physical_rows()];
|
|
||||||
rdoc.put(RDOC_CODART, codart);
|
rdoc.put(RDOC_CODART, codart);
|
||||||
rdoc.put(RDOC_CODARTMAG, codart);
|
rdoc.put(RDOC_CODARTMAG, codart);
|
||||||
rdoc.checked(true);
|
rdoc.checked(true);
|
||||||
@ -556,39 +604,21 @@ bool TImport_app::importa_fatture(const TFilename& fname, const TString& codnum,
|
|||||||
sep = ", ";
|
sep = ", ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
save_rdoc_desc(desc, rdoc);
|
||||||
|
|
||||||
if (desc.len() > 50)
|
desc = fat.get(23).as_string();
|
||||||
|
if (desc.full())
|
||||||
{
|
{
|
||||||
TParagraph_string p(desc, 50);
|
TRiga_documento& rdesc = doc->new_row("05");
|
||||||
rdoc.put(RDOC_DESCR, p.get());
|
save_rdoc_desc(desc, rdesc);
|
||||||
const int sep = p.find(p.separator());
|
|
||||||
if (sep > 0)
|
|
||||||
{
|
|
||||||
rdoc.put(RDOC_DESCLUNGA, "X");
|
|
||||||
TString tmp = p.mid(sep+1);
|
|
||||||
tmp.replace(p.separator(), ' ');
|
|
||||||
tmp.strip_double_spaces();
|
|
||||||
tmp.insert("\n");
|
|
||||||
rdoc.put(RDOC_DESCEST, tmp);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
rdoc.put(RDOC_DESCR, desc);
|
|
||||||
|
|
||||||
const int err = doc.write();
|
if (doc != NULL)
|
||||||
if (err == NOERR)
|
{
|
||||||
{
|
save_doc(*doc, ndocs, mindoc, maxdoc, log);
|
||||||
ndocs++;
|
delete doc;
|
||||||
maxdoc = doc.get_long(DOC_NDOC);
|
doc = NULL;
|
||||||
if (ndocs == 1)
|
|
||||||
mindoc = maxdoc;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
str.format("Impossibile registrare il documento %s/%ld alla riga %ld",
|
|
||||||
(const char*)codnum, ndoc, fat.current_row()+1);
|
|
||||||
log.log(2, str);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.log(0, str.cut(0));
|
log.log(0, str.cut(0));
|
||||||
|
@ -26,7 +26,7 @@ END
|
|||||||
STRING F_NUM 4
|
STRING F_NUM 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Codice numerazione fatture "
|
PROMPT 1 4 "Codice numerazione fatture "
|
||||||
USE %NUM
|
USE %NUM SELECT I1=2
|
||||||
INPUT CODTAB F_NUM
|
INPUT CODTAB F_NUM
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user