Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento : hardy git-svn-id: svn://10.65.10.50/branches/R_10_00@21554 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
249f822b50
commit
8ce29efe91
@ -302,37 +302,42 @@ void TFile2Txt::genera_sospesi_txt()
|
||||
{
|
||||
progind.addstatus(1);
|
||||
|
||||
sospesi.new_rec("");
|
||||
|
||||
//per riempire i campi è necessario un po' di casino sulla partita in esame
|
||||
const TRectype& rec_part = archivio_part.cursor()->curr();
|
||||
TPartita partita(rec_part);
|
||||
//cerca il saldo, il totale del doc originale, il residuo
|
||||
TImporto saldo, doc, pag, imp;
|
||||
partita.calcola_saldo(saldo, doc, pag, imp);
|
||||
TImporto residuo = doc;
|
||||
residuo -= saldo;
|
||||
|
||||
const int nriga = rec_part.get_int(PART_NRIGA);
|
||||
const TRiga_scadenze& scad = partita.rata(nriga, 1);
|
||||
const TDate datascad = scad.get_date(SCAD_DATASCAD);
|
||||
//solo se il saldo è > 0 crea la nuova riga da esportare nel txt
|
||||
//...così volle Hardy!...
|
||||
if (saldo.valore() > ZERO)
|
||||
{
|
||||
sospesi.new_rec("");
|
||||
|
||||
//e vai che riempiamo i campi
|
||||
const long codcf = rec_part.get_long(PART_SOTTOCONTO); //riprendiamo il codcf come long
|
||||
const TString& codage = hd_find_codag(codcf);
|
||||
sospesi.set("CodiceTerminale", codage);
|
||||
sospesi.set("CodiceCliente", codcf);
|
||||
const TString& ndoc = rec_part.get(PART_NUMDOC);
|
||||
sospesi.set("NumeroFattura", ndoc);
|
||||
const TDate datadoc = rec_part.get_date(PART_DATADOC);
|
||||
sospesi.set("DataFattura", hd_format_date6(datadoc));
|
||||
sospesi.set("ImportoResiduo", residuo.valore());
|
||||
sospesi.set("ImpOriginalDoc", doc.valore());
|
||||
sospesi.set("DataScadenza", hd_format_date6(datascad));
|
||||
TString16 cod_partita;
|
||||
cod_partita << rec_part.get_int(PART_ANNO) << "-" << rec_part.get(PART_NUMPART);
|
||||
sospesi.set("Partita", cod_partita);
|
||||
sospesi.set("TipoDoc", "F");
|
||||
const int nriga = rec_part.get_int(PART_NRIGA);
|
||||
const TRiga_scadenze& scad = partita.rata(nriga, 1);
|
||||
const TDate datascad = scad.get_date(SCAD_DATASCAD);
|
||||
|
||||
//e vai che riempiamo i campi
|
||||
const long codcf = rec_part.get_long(PART_SOTTOCONTO); //riprendiamo il codcf come long
|
||||
const TString& codage = hd_find_codag(codcf);
|
||||
sospesi.set("CodiceTerminale", codage);
|
||||
sospesi.set("CodiceCliente", codcf);
|
||||
const TString& ndoc = rec_part.get(PART_NUMDOC);
|
||||
sospesi.set("NumeroFattura", ndoc);
|
||||
const TDate datadoc = rec_part.get_date(PART_DATADOC);
|
||||
sospesi.set("DataFattura", hd_format_date6(datadoc));
|
||||
real residuo = saldo.valore();
|
||||
residuo *= CENTO;
|
||||
sospesi.set("ImportoResiduo", residuo);
|
||||
sospesi.set("ImpOriginalDoc", doc.valore());
|
||||
sospesi.set("DataScadenza", hd_format_date6(datascad));
|
||||
TString16 cod_partita;
|
||||
cod_partita << rec_part.get_int(PART_ANNO) << "-" << rec_part.get(PART_NUMPART);
|
||||
sospesi.set("Partita", cod_partita);
|
||||
sospesi.set("TipoDocumento", "F");
|
||||
}
|
||||
}
|
||||
|
||||
TFilename output_path = genera_path("sospesi");
|
||||
|
197
ha/ha1300.cpp
197
ha/ha1300.cpp
@ -18,35 +18,44 @@ int ordina_upload(const TObject** o1, const TObject** o2)
|
||||
const TString& s1 = *(TString*)*o1;
|
||||
const TString& s2 = *(TString*)*o2;
|
||||
|
||||
if (s1[1] == 'F' && s2[1] == 'F')
|
||||
if (s1[0] == 'V' || s2[0] == 'V')
|
||||
{
|
||||
TToken_string k[2];
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
const TString& rec = i == 0 ? s1 : s2;
|
||||
TToken_string& key = k[i];
|
||||
if (rec[0] == 'T')
|
||||
{
|
||||
key.add(rec.mid(14,2)); //anno
|
||||
key.add(rec.mid(16,1)); //tipodoc
|
||||
key.add(rec.mid(5,5)); //numdoc
|
||||
}
|
||||
else
|
||||
{
|
||||
key.add(rec.mid(14,2)); //anno
|
||||
key.add(rec.mid(28,1)); //tipodoc
|
||||
key.add(rec.mid(5,5)); //numdoc
|
||||
key.add(rec.mid(29,5)); //codart
|
||||
}
|
||||
}
|
||||
return k[0].compare(k[1]);
|
||||
if (s1[0] != 'V' || s2[0] != 'V')
|
||||
return s1[0] == 'V' ? -1 : +1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (s1[1] == 'F')
|
||||
return +1;
|
||||
if (s2[1] == 'F')
|
||||
return -1;
|
||||
//ordinatore dei record Testata e Riga fattura
|
||||
if (s1[1] == 'F' && s2[1] == 'F')
|
||||
{
|
||||
TToken_string k[2];
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
const TString& rec = i == 0 ? s1 : s2;
|
||||
TToken_string& key = k[i];
|
||||
if (rec[0] == 'T')
|
||||
{
|
||||
key.add(rec.mid(14,2)); //anno
|
||||
key.add(rec.mid(16,1)); //tipodoc
|
||||
key.add(rec.mid(5,5)); //numdoc
|
||||
}
|
||||
else
|
||||
{
|
||||
key.add(rec.mid(14,2)); //anno
|
||||
key.add(rec.mid(28,1)); //tipodoc
|
||||
key.add(rec.mid(5,5)); //numdoc
|
||||
key.add(rec.mid(29,5)); //codart
|
||||
}
|
||||
}
|
||||
return k[0].compare(k[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (s1[1] == 'F')
|
||||
return +1;
|
||||
if (s2[1] == 'F')
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return s1.compare(s2);
|
||||
@ -203,17 +212,17 @@ THardy_upload_recordset::THardy_upload_recordset(const TFilename& filename)
|
||||
//--------------
|
||||
add_trc_field("VC", "TipoRecord", T_X, 1, 2); //x
|
||||
add_trc_field("VC", "CodiceTerminale", T_N, 3, 3); //x
|
||||
add_trc_field("VC", CLI_CODCF, T_X, 6, 6); //x
|
||||
add_trc_field("VC", CLI_RAGSOC, T_X, 12, 34); //x
|
||||
add_trc_field("VC", CLI_INDCF, T_X, 46, 34); //x
|
||||
add_trc_field("VC", "CodiceCliente", T_X, 6, 6); //x
|
||||
add_trc_field("VC", "RagioneSociale", T_X, 12, 34); //x
|
||||
add_trc_field("VC", "Indirizzo", T_X, 46, 34); //x
|
||||
add_trc_field("VC", "Localita", T_X, 80, 20); //x attenzione che potrebbe essere il com_dencom
|
||||
add_trc_field("VC", CLI_CAPCF, T_X, 100, 5); //x
|
||||
add_trc_field("VC", "CAP", T_X, 100, 5); //x
|
||||
add_trc_field("VC", "Provincia", T_X, 105, 2); //x da questo e da dencom ricaviamo il codcom
|
||||
add_trc_field("VC", CLI_PAIV, T_X, 107, 16); //x
|
||||
add_trc_field("VC", CLI_CODPAG, T_X, 123, 1); //x
|
||||
add_trc_field("VC", "CodiceListino", T_X, 124, 3);
|
||||
add_trc_field("VC", "TipoDocumento", T_X, 127, 1);
|
||||
add_trc_field("VC", CLI_COFI, T_X, 128, 16); //x
|
||||
add_trc_field("VC", "PartitaIVA", T_X, 107, 16); //x
|
||||
add_trc_field("VC", "CodicePagamento", T_X, 123, 2); //x
|
||||
add_trc_field("VC", "CodiceListino", T_X, 125, 3);
|
||||
add_trc_field("VC", "TipoDocumento", T_X, 128, 1);
|
||||
add_trc_field("VC", "CodiceFiscale", T_X, 129, 16); //x
|
||||
|
||||
|
||||
//Tipo record RC
|
||||
@ -259,6 +268,7 @@ class TUpload2Campo : public TSkeleton_application
|
||||
{
|
||||
TFilename _intput_dir;
|
||||
bool _can_write;
|
||||
TAssoc_array _nuovi_clienti;
|
||||
|
||||
protected:
|
||||
//metodi di basso livello
|
||||
@ -344,12 +354,116 @@ void TUpload2Campo::elabora_SU(THardy_upload_recordset& recset, TLog_report& log
|
||||
|
||||
void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log)
|
||||
{
|
||||
const TString& cod_term = recset.get("CodiceTerminale").as_string();
|
||||
const TString& codcf = recset.get(CLI_CODCF).as_string();
|
||||
const TString& ragsoc = recset.get(CLI_RAGSOC).as_string();
|
||||
//dati dal recordset di upload
|
||||
TString4 codice_terminale = recset.get("CodiceTerminale").as_string();
|
||||
const TString& codice_agente = check_agente(codice_terminale, log);
|
||||
|
||||
long codcf = recset.get("CodiceCliente").as_int();
|
||||
|
||||
TLocalisamfile file_clifo(LF_CLIFO);
|
||||
|
||||
//se il codice contiene un '*' -> il cliente è nuovo e va aggiunto alla lista di Campo
|
||||
//se invece il cliente ha un codice normale -> è un aggiornamento dei suoi dati -> controlla che esista davvero
|
||||
if (codcf <= 0)
|
||||
{
|
||||
//questa è un surrogato della get_next_cli
|
||||
file_clifo.zero();
|
||||
file_clifo.put(CLI_TIPOCF, 'C');
|
||||
file_clifo.read(_isgteq);
|
||||
if (file_clifo.good())
|
||||
file_clifo.prev() ;
|
||||
file_clifo.setstatus(NOERR);
|
||||
if (file_clifo.good())
|
||||
codcf += file_clifo.get_long(CLI_CODCF);
|
||||
|
||||
//finestra propositiva del nuovo codcf
|
||||
|
||||
file_clifo.zero();
|
||||
file_clifo.put(CLI_TIPOCF, 'C');
|
||||
file_clifo.put(CLI_CODCF, codcf);
|
||||
file_clifo.write();
|
||||
}
|
||||
|
||||
//il cliente, se non nuovo, deve esistere!
|
||||
file_clifo.put(CLI_TIPOCF, 'C');
|
||||
file_clifo.put(CLI_CODCF, codcf);
|
||||
|
||||
int err = file_clifo.read();
|
||||
|
||||
//se non esiste non scrive ma continua
|
||||
if (err != NOERR)
|
||||
{
|
||||
_can_write = false;
|
||||
TString msg;
|
||||
msg << "Impossibile aggiornare il cliente " << codcf << ". File clifo.";
|
||||
log.log(2, msg);
|
||||
}
|
||||
|
||||
//campi clifo
|
||||
const TString& ragsoc = recset.get("RagioneSociale").as_string();
|
||||
file_clifo.put(CLI_RAGSOC, ragsoc);
|
||||
const TString& indcf = recset.get("Indirizzo").as_string();
|
||||
file_clifo.put(CLI_INDCF, indcf);
|
||||
const TString& localita = recset.get("Localita").as_string();
|
||||
file_clifo.put(CLI_LOCCF, localita);
|
||||
const TString& cap = recset.get("CAP").as_string();
|
||||
file_clifo.put(CLI_CAPCF, cap);
|
||||
//la provincia non serve perchè si passa dal codice del comune
|
||||
//const TString& provincia = recset.get("Provincia").as_string();
|
||||
const TString& piva = recset.get("PartitaIVA").as_string();
|
||||
file_clifo.put(CLI_PAIV, piva);
|
||||
const TString& codpag = recset.get("CodicePagamento").as_string();
|
||||
file_clifo.put(CLI_CODPAG, codpag);
|
||||
const TString& cofi = recset.get("CodiceFiscale").as_string();
|
||||
file_clifo.put(CLI_COFI, cofi);
|
||||
|
||||
//campi cfven
|
||||
TLocalisamfile file_cfven(LF_CFVEN);
|
||||
file_cfven.put(CFV_TIPOCF, 'C');
|
||||
file_cfven.put(CFV_CODCF, codcf);
|
||||
err = file_cfven.read();
|
||||
|
||||
if (err != NOERR)
|
||||
{
|
||||
_can_write = false;
|
||||
TString msg;
|
||||
msg << "Impossibile aggiornare il cliente " << ragsoc << ". File cfven.";
|
||||
log.log(2, msg);
|
||||
}
|
||||
|
||||
file_cfven.put(CFV_CODAG, codice_agente);
|
||||
const TString& codlist = recset.get("CodiceListino").as_string();
|
||||
file_cfven.put(CFV_CODLIST, codlist);
|
||||
|
||||
//se alla fin fine può scrivere -> aggiorna sia clifo che cfven
|
||||
if (_can_write)
|
||||
file_clifo.rewrite();
|
||||
|
||||
//incredibilmente arriva in fondo
|
||||
TString msg;
|
||||
msg << "Scartato nuovo cliente. Terminale: " << cod_term << " CodCli: " << codcf << " Ragsoc: " << ragsoc;
|
||||
log.log(0, msg);
|
||||
msg << "Cliente: " << codcf << " Terminale: " << codice_terminale;
|
||||
//se può scrivere...
|
||||
if (_can_write)
|
||||
{
|
||||
//alla fine della fiera salva il cliente e il cfven
|
||||
err = file_clifo.rewrite() && file_cfven.rewrite();
|
||||
|
||||
if (err == NOERR)
|
||||
{
|
||||
msg.insert("Registrato cliente: ", 0);
|
||||
log.log(0, msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg.insert("Impossibile registrare cliente: ", 0);
|
||||
log.log(2, msg);
|
||||
}
|
||||
}
|
||||
else //..sennò avverte e basta
|
||||
{
|
||||
msg.insert("Controllato cliente: ", 0);
|
||||
log.log(0, msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -785,6 +899,7 @@ void TUpload2Campo::elabora_RC(THardy_upload_recordset& recset, TLog_report& log
|
||||
}
|
||||
|
||||
|
||||
|
||||
void TUpload2Campo::elabora(const TMask& mask)
|
||||
{
|
||||
TToken_string tipi_record("SU|TF|RF|SI|BR|VC|RC");
|
||||
@ -844,8 +959,8 @@ void TUpload2Campo::elabora(const TMask& mask)
|
||||
case 4: //tipo record: BR (righe movimenti magazzino)
|
||||
elabora_BR(recset, log);
|
||||
break;
|
||||
case 5: //tipo record: VC (Variazioni Cliente)
|
||||
//elabora_VC(recset, log); //non serve! gli agenti non possono immettere clienti da terminale!
|
||||
case 5: //tipo record: VC (nuovi clienti e Variazioni Cliente)
|
||||
elabora_VC(recset, log);
|
||||
break;
|
||||
case 6: //tipo record: RC (Richiesta Carico)
|
||||
elabora_RC(recset, log);
|
||||
|
Loading…
x
Reference in New Issue
Block a user