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 rs2 = cli.get(7).as_string(); rs2.trim();
|
||||
|
||||
str.cut(0);
|
||||
if (rs2.blank())
|
||||
{
|
||||
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 << rs1.mid(spc+1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (str.empty())
|
||||
{
|
||||
str << rs1 << ' ' << rs2;
|
||||
@ -417,6 +417,47 @@ const TString& TImport_app::get_periodo(const TCBA_recset& fat) const
|
||||
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
|
||||
{
|
||||
TString str = TR("Importazione documenti");
|
||||
@ -438,6 +479,8 @@ bool TImport_app::importa_fatture(const TFilename& fname, const TString& codnum,
|
||||
TString periodo;
|
||||
TToken_string ospiti(256, '@');
|
||||
|
||||
TDocumento* doc = NULL;
|
||||
|
||||
TProgind pi(fat.items(), str);
|
||||
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 (doc != NULL)
|
||||
{
|
||||
save_doc(*doc, ndocs, mindoc, maxdoc, log);
|
||||
delete doc;
|
||||
doc = NULL;
|
||||
}
|
||||
|
||||
TString80 cofi_paiv = fat.get(14).as_string();
|
||||
cofi_paiv.trim(); cofi_paiv.upper();
|
||||
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";
|
||||
const TString4 um = cache().get(LF_UMART, str, UMART_UM);
|
||||
|
||||
TDocumento doc('D', datadoc.year(), codnum, 0);
|
||||
|
||||
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)
|
||||
if (doc == NULL)
|
||||
{
|
||||
const TRectype& rec = nsban.row(1);
|
||||
doc.put(DOC_CODABIP, rec.get(CFBAN_ABI));
|
||||
doc.put(DOC_CODCABP, rec.get(CFBAN_CAB));
|
||||
}
|
||||
doc = new TDocumento('D', datadoc.year(), codnum, 0);
|
||||
doc->put(DOC_TIPODOC, "F01");
|
||||
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);
|
||||
TRecord_array vsban(key, LF_CFBAN);
|
||||
if (vsban.rows() > 0)
|
||||
{
|
||||
const TRectype& rec = vsban.row(1);
|
||||
doc.put(DOC_CODABIA, rec.get(CFBAN_ABI));
|
||||
doc.put(DOC_CODCABA, rec.get(CFBAN_CAB));
|
||||
doc.put(DOC_IBAN, rec.get(CFBAN_IBAN));
|
||||
key.add("V", 2);
|
||||
TRecord_array vsban(key, LF_CFBAN);
|
||||
if (vsban.rows() > 0)
|
||||
{
|
||||
const TRectype& rec = vsban.row(1);
|
||||
doc->put(DOC_CODABIA, rec.get(CFBAN_ABI));
|
||||
doc->put(DOC_CODCABA, rec.get(CFBAN_CAB));
|
||||
doc->put(DOC_IBAN, rec.get(CFBAN_IBAN));
|
||||
}
|
||||
}
|
||||
|
||||
if (doc.rows() == 0) // Nuovo documento
|
||||
{
|
||||
doc.put(DOC_TIPODOC, "F01");
|
||||
doc.put(DOC_STATO, 2);
|
||||
doc.new_row("01");
|
||||
}
|
||||
|
||||
TRiga_documento& rdoc = doc[doc.physical_rows()];
|
||||
|
||||
TRiga_documento& rdoc = doc->new_row("01");
|
||||
rdoc.put(RDOC_CODART, codart);
|
||||
rdoc.put(RDOC_CODARTMAG, codart);
|
||||
rdoc.checked(true);
|
||||
@ -556,39 +604,21 @@ bool TImport_app::importa_fatture(const TFilename& fname, const TString& codnum,
|
||||
sep = ", ";
|
||||
}
|
||||
}
|
||||
save_rdoc_desc(desc, rdoc);
|
||||
|
||||
if (desc.len() > 50)
|
||||
desc = fat.get(23).as_string();
|
||||
if (desc.full())
|
||||
{
|
||||
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);
|
||||
}
|
||||
TRiga_documento& rdesc = doc->new_row("05");
|
||||
save_rdoc_desc(desc, rdesc);
|
||||
}
|
||||
else
|
||||
rdoc.put(RDOC_DESCR, desc);
|
||||
}
|
||||
|
||||
const int err = doc.write();
|
||||
if (err == NOERR)
|
||||
{
|
||||
ndocs++;
|
||||
maxdoc = doc.get_long(DOC_NDOC);
|
||||
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);
|
||||
}
|
||||
if (doc != NULL)
|
||||
{
|
||||
save_doc(*doc, ndocs, mindoc, maxdoc, log);
|
||||
delete doc;
|
||||
doc = NULL;
|
||||
}
|
||||
|
||||
log.log(0, str.cut(0));
|
||||
|
@ -26,7 +26,7 @@ END
|
||||
STRING F_NUM 4
|
||||
BEGIN
|
||||
PROMPT 1 4 "Codice numerazione fatture "
|
||||
USE %NUM
|
||||
USE %NUM SELECT I1=2
|
||||
INPUT CODTAB F_NUM
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
|
Loading…
x
Reference in New Issue
Block a user