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:
luca 2011-02-01 11:40:26 +00:00
parent 249f822b50
commit 8ce29efe91
2 changed files with 184 additions and 64 deletions

View File

@ -302,16 +302,18 @@ void TFile2Txt::genera_sospesi_txt()
{ {
progind.addstatus(1); progind.addstatus(1);
sospesi.new_rec("");
//per riempire i campi è necessario un po' di casino sulla partita in esame //per riempire i campi è necessario un po' di casino sulla partita in esame
const TRectype& rec_part = archivio_part.cursor()->curr(); const TRectype& rec_part = archivio_part.cursor()->curr();
TPartita partita(rec_part); TPartita partita(rec_part);
//cerca il saldo, il totale del doc originale, il residuo //cerca il saldo, il totale del doc originale, il residuo
TImporto saldo, doc, pag, imp; TImporto saldo, doc, pag, imp;
partita.calcola_saldo(saldo, doc, pag, imp); partita.calcola_saldo(saldo, doc, pag, imp);
TImporto residuo = doc;
residuo -= saldo; //solo se il saldo è > 0 crea la nuova riga da esportare nel txt
//...così volle Hardy!...
if (saldo.valore() > ZERO)
{
sospesi.new_rec("");
const int nriga = rec_part.get_int(PART_NRIGA); const int nriga = rec_part.get_int(PART_NRIGA);
const TRiga_scadenze& scad = partita.rata(nriga, 1); const TRiga_scadenze& scad = partita.rata(nriga, 1);
@ -326,13 +328,16 @@ void TFile2Txt::genera_sospesi_txt()
sospesi.set("NumeroFattura", ndoc); sospesi.set("NumeroFattura", ndoc);
const TDate datadoc = rec_part.get_date(PART_DATADOC); const TDate datadoc = rec_part.get_date(PART_DATADOC);
sospesi.set("DataFattura", hd_format_date6(datadoc)); sospesi.set("DataFattura", hd_format_date6(datadoc));
sospesi.set("ImportoResiduo", residuo.valore()); real residuo = saldo.valore();
residuo *= CENTO;
sospesi.set("ImportoResiduo", residuo);
sospesi.set("ImpOriginalDoc", doc.valore()); sospesi.set("ImpOriginalDoc", doc.valore());
sospesi.set("DataScadenza", hd_format_date6(datascad)); sospesi.set("DataScadenza", hd_format_date6(datascad));
TString16 cod_partita; TString16 cod_partita;
cod_partita << rec_part.get_int(PART_ANNO) << "-" << rec_part.get(PART_NUMPART); cod_partita << rec_part.get_int(PART_ANNO) << "-" << rec_part.get(PART_NUMPART);
sospesi.set("Partita", cod_partita); sospesi.set("Partita", cod_partita);
sospesi.set("TipoDoc", "F"); sospesi.set("TipoDocumento", "F");
}
} }
TFilename output_path = genera_path("sospesi"); TFilename output_path = genera_path("sospesi");

View File

@ -18,6 +18,14 @@ int ordina_upload(const TObject** o1, const TObject** o2)
const TString& s1 = *(TString*)*o1; const TString& s1 = *(TString*)*o1;
const TString& s2 = *(TString*)*o2; const TString& s2 = *(TString*)*o2;
if (s1[0] == 'V' || s2[0] == 'V')
{
if (s1[0] != 'V' || s2[0] != 'V')
return s1[0] == 'V' ? -1 : +1;
}
else
{
//ordinatore dei record Testata e Riga fattura
if (s1[1] == 'F' && s2[1] == 'F') if (s1[1] == 'F' && s2[1] == 'F')
{ {
TToken_string k[2]; TToken_string k[2];
@ -48,6 +56,7 @@ int ordina_upload(const TObject** o1, const TObject** o2)
if (s2[1] == 'F') if (s2[1] == 'F')
return -1; return -1;
} }
}
return s1.compare(s2); 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", "TipoRecord", T_X, 1, 2); //x
add_trc_field("VC", "CodiceTerminale", T_N, 3, 3); //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", "CodiceCliente", T_X, 6, 6); //x
add_trc_field("VC", CLI_RAGSOC, T_X, 12, 34); //x add_trc_field("VC", "RagioneSociale", T_X, 12, 34); //x
add_trc_field("VC", CLI_INDCF, T_X, 46, 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", "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", "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", "PartitaIVA", T_X, 107, 16); //x
add_trc_field("VC", CLI_CODPAG, T_X, 123, 1); //x add_trc_field("VC", "CodicePagamento", T_X, 123, 2); //x
add_trc_field("VC", "CodiceListino", T_X, 124, 3); add_trc_field("VC", "CodiceListino", T_X, 125, 3);
add_trc_field("VC", "TipoDocumento", T_X, 127, 1); add_trc_field("VC", "TipoDocumento", T_X, 128, 1);
add_trc_field("VC", CLI_COFI, T_X, 128, 16); //x add_trc_field("VC", "CodiceFiscale", T_X, 129, 16); //x
//Tipo record RC //Tipo record RC
@ -259,6 +268,7 @@ class TUpload2Campo : public TSkeleton_application
{ {
TFilename _intput_dir; TFilename _intput_dir;
bool _can_write; bool _can_write;
TAssoc_array _nuovi_clienti;
protected: protected:
//metodi di basso livello //metodi di basso livello
@ -344,13 +354,117 @@ void TUpload2Campo::elabora_SU(THardy_upload_recordset& recset, TLog_report& log
void TUpload2Campo::elabora_VC(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(); //dati dal recordset di upload
const TString& codcf = recset.get(CLI_CODCF).as_string(); TString4 codice_terminale = recset.get("CodiceTerminale").as_string();
const TString& ragsoc = recset.get(CLI_RAGSOC).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; TString msg;
msg << "Scartato nuovo cliente. Terminale: " << cod_term << " CodCli: " << codcf << " Ragsoc: " << ragsoc; 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 << "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); 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);
}
}
void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log) void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log)
@ -785,6 +899,7 @@ void TUpload2Campo::elabora_RC(THardy_upload_recordset& recset, TLog_report& log
} }
void TUpload2Campo::elabora(const TMask& mask) void TUpload2Campo::elabora(const TMask& mask)
{ {
TToken_string tipi_record("SU|TF|RF|SI|BR|VC|RC"); 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) case 4: //tipo record: BR (righe movimenti magazzino)
elabora_BR(recset, log); elabora_BR(recset, log);
break; break;
case 5: //tipo record: VC (Variazioni Cliente) case 5: //tipo record: VC (nuovi clienti e Variazioni Cliente)
//elabora_VC(recset, log); //non serve! gli agenti non possono immettere clienti da terminale! elabora_VC(recset, log);
break; break;
case 6: //tipo record: RC (Richiesta Carico) case 6: //tipo record: RC (Richiesta Carico)
elabora_RC(recset, log); elabora_RC(recset, log);