Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
riporto da 11
importazione documenti terminata (per quanto riguarda i campi noti); per gli ignoti si vedra'!


git-svn-id: svn://10.65.10.50/branches/R_10_00@21083 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-10-27 10:53:47 +00:00
parent cbb9055e06
commit a519f17133
2 changed files with 46 additions and 24 deletions

View File

@ -183,6 +183,7 @@ real THardy_tied_mask::find_costo(const TString& codart, const TString& um) cons
if (costo <= ZERO)
{
TLocalisamfile umart(LF_UMART);
umart.setkey(2);
umart.put(UMART_CODART, codart);
umart.put(UMART_UM, um);
const int err_umart = umart.read();

View File

@ -255,6 +255,7 @@ protected:
void elabora_BR(THardy_upload_recordset& recset, TLog_report& log);
void elabora_VC(THardy_upload_recordset& recset, TLog_report& log);
void elabora_TF(THardy_upload_recordset& recset, TLog_report& log);
void elabora_SI(THardy_upload_recordset& recset, TLog_report& log);
void elabora(const TMask& mask);
@ -295,24 +296,34 @@ void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log
}
void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log)
{
}
void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log)
{
//1) codice terminale
//1) codice terminale (lungo 3) e codice agente (lungo 5)
const TString4 codice_terminale = recset.get("CodiceTerminale").as_string();
const TString& codage = cache().get(LF_AGENTI, codice_terminale, AGE_CODAGE);
if (codage != codice_terminale)
TString8 codice_agente = codice_terminale;
codice_agente.right_just(5, '0');
const TString& codage = cache().get(LF_AGENTI, codice_agente, AGE_CODAGE);
if (codage != codice_agente)
{
_can_write = false;
TString msg;
msg << "Codice terminale " << codice_terminale << "- codice agente" << codage << " non corrispondenti";
msg << "Codice agente " << codice_agente << " da terminale: sconosciuto";
log.log(2, msg);
}
//2) Testata documento
//genera una simpatico documento di cui raccatta la chiave
const TString& rec_anno = recset.get(DOC_DATADOC).as_string().right(2);
int anno = 2000 + atoi(rec_anno);
const TString& str_datadoc = recset.get(DOC_DATADOC).as_string();
int anno = 2000 + atoi(str_datadoc.right(2));
const int mese = atoi(str_datadoc.mid(2,2));
const int giorno = atoi(str_datadoc.left(2));
const char rec_tipodoc = recset.get(DOC_TIPODOC).as_string()[0];
//2a) tipo documento
TString4 tipodoc;
@ -350,6 +361,8 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
TDocumento doc('D', anno, codnum, ndoc);
doc.put(DOC_TIPODOC, tipodoc);
TDate datadoc(giorno, mese, anno);
doc.put(DOC_DATADOC, datadoc);
doc.put(DOC_TIPOCF, "C");
//2c) cliente
@ -393,8 +406,10 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
//serie delle put sulla riga documento; ricordiamo che la chiave della riga viene riempita dalla new_row
//3a) articolo
const TString& codart = recset.get(RDOC_CODART).as_string();
const TString& articolo = cache().get(LF_ANAMAG, codart, ANAMAG_CODART);
TString8 codart = recset.get(RDOC_CODART).as_string();
codart.trim();
const TRectype& rec_anamag = cache().get(LF_ANAMAG, codart);
const TString& articolo = rec_anamag.get(ANAMAG_CODART);
if (articolo != codart)
{
_can_write = false;
@ -406,13 +421,16 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
rigadoc.put(RDOC_CODART, codart);
rigadoc.put(RDOC_CODARTMAG, codart);
rigadoc.put(RDOC_CHECKED, "X");
rigadoc.put(RDOC_DESCR, rec_anamag.get(ANAMAG_DESCR));
//3b) umart
const TString& umqta = recset.get(RDOC_UMQTA).as_string();
TToken_string key_um;
key_um.add(codart);
key_um.add(umqta);
const TString& umart = cache().get(LF_UMART, key_um, UMART_UM);
if (umart != umqta)
TLocalisamfile file_umart(LF_UMART);
file_umart.setkey(2);
file_umart.put(UMART_CODART, codart);
file_umart.put(UMART_UM, umqta);
const int err_umart = file_umart.read();
if (err_umart != NOERR)
{
_can_write = false;
TString msg;
@ -430,9 +448,9 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
TString str_sconto;
real sconto[4];
sconto[0] = recset.get("Sconto1").as_real();
sconto[1] = recset.get("Sconto2").as_real() / CENTO;
sconto[2] = recset.get("Sconto3").as_real() / CENTO;
sconto[3] = recset.get("ScontoLibero").as_real() / CENTO;
sconto[1] = recset.get("Sconto2").as_real();
sconto[2] = recset.get("Sconto3").as_real();
sconto[3] = recset.get("ScontoLibero").as_real();
for (int s = 0; s < 4; s++)
{
if (!sconto[s].is_zero())
@ -445,8 +463,7 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
real prezzo_lordo = recset.get(RDOC_PREZZO).as_real();
prezzo_lordo /= 1000;
rigadoc.put(RDOC_PREZZO, "");
rigadoc.put(RDOC_PREZZOL, prezzo_lordo);
rigadoc.put(RDOC_PREZZO, prezzo_lordo);
//3x) iva
const int aliquota_iva = recset.get("AliquotaIva").as_int();
@ -479,6 +496,8 @@ void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log
msg.insert("Controllato documento: ", 0);
log.log(0, msg);
}
log.log(0, "");
}
void TUpload2Campo::elabora(const TMask& mask)
@ -502,6 +521,8 @@ void TUpload2Campo::elabora(const TMask& mask)
TProgind pi(items, TR("Acquisizione dati in corso..."), true, true);
TLog_report log("Segnalazioni su acquisizione");
log.kill_duplicates();
log.log(0, "");
//parametro di controllo; solo se resta true fino alla fine il documento viene writato
//solo in caso di elaborazione definitiva può diventare true
_can_write = false;
@ -524,22 +545,22 @@ void TUpload2Campo::elabora(const TMask& mask)
switch (pos)
{
case 0: //tipo record: SU (SetUp...ovvero agente)
elabora_SU(recset, log);
//elabora_SU(recset, log); //non serve a una cippa!
break;
case 1: //tipo record: TF (Testata Fattura)
elabora_TF(recset, log);
break;
case 2: //tipo record: RF (Riga Fattura) //non serve! lo fa l'elaborazione di testata
//elabora_RF(recset, log);
case 2: //tipo record: RF (Riga Fattura)
//elabora_RF(recset, log); //non serve! lo fa l'elaborazione di testata
break;
case 3: //tipo record: SI (incasso documenti)
//elabora_SI(recset, log);
elabora_SI(recset, log);
break;
case 4: //tipo record: BR (movimenti magazzino)
elabora_BR(recset, log);
//elabora_BR(recset, log); //non li importiamo perchè vengono eseguiti alla scrittura dei documenti importati su archivi
break;
case 5: //tipo record: VC (Variazioni Cliente)
//elabora_VC(recset, log);
//elabora_VC(recset, log); //non serve! gli agenti non possono immettere clienti da terminale!
break;
default: //se il tipo record non esiste nella lista dei tipi record si incazza e lo scrive!
{