Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento : importazione SI: seconda parte git-svn-id: svn://10.65.10.50/branches/R_10_00@21577 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
954fbb54a0
commit
ed27d17134
116
ha/ha1300.cpp
116
ha/ha1300.cpp
@ -296,6 +296,7 @@ protected:
|
||||
long check_cliente(const TString& str_codcf, TLog_report& log);
|
||||
void check_magazzino(const TString& codmag_age, TLog_report& log);
|
||||
void check_causale(TString& codcaus, TLog_report& log);
|
||||
bool genera_incasso(TPartita& game, int nriga, int nrata, const TMovimentoPN& mov, TLog_report& log) const;
|
||||
|
||||
//metodi di alto livello
|
||||
void elabora_SU(THardy_upload_recordset& recset, TLog_report& log);
|
||||
@ -398,6 +399,54 @@ long TUpload2Campo::check_cliente(const TString& str_codcf, TLog_report& log)
|
||||
return codcf;
|
||||
}
|
||||
|
||||
//aggiorna una partita con una nuova riga che riguarda l'incasso
|
||||
bool TUpload2Campo::genera_incasso(TPartita& game, int nriga, int nrata,
|
||||
const TMovimentoPN& mov, TLog_report& log) const
|
||||
{
|
||||
TString msg;
|
||||
msg.format(FR(" %d della riga %d della partita %d/%s"),
|
||||
nrata, nriga, game.anno(), (const char*)game.numero());
|
||||
|
||||
if (!game.esiste(nriga, nrata)) // Non si sa mai col saldaconto!
|
||||
{
|
||||
msg.insert(TR("Non esiste la rata"));
|
||||
log.log(1, msg);
|
||||
//return false;
|
||||
nriga = nrata = game.UNASSIGNED;
|
||||
}
|
||||
|
||||
const TRectype& head = mov.curr();
|
||||
|
||||
// Creo una riga di partita di tipo pagamento e ci copio i dati della testata del movimento
|
||||
TRiga_partite& riga = game.new_row();
|
||||
const int nrigp = riga.get_int(PART_NRIGA);
|
||||
riga.put(PART_TIPOMOV, tm_pagamento);
|
||||
riga.put(PART_SEZ, game.conto().tipo() == 'F' ? 'D' : 'A');
|
||||
riga.put(PART_NREG, head.get(MOV_NUMREG));
|
||||
riga.put(PART_NUMRIG, 1);
|
||||
riga.put(PART_DATAREG, head.get(MOV_DATAREG));
|
||||
riga.put(PART_DATAPAG, head.get(MOV_DATACOMP));
|
||||
riga.put(PART_CODCAUS, head.get(MOV_CODCAUS));
|
||||
riga.put(PART_NUMDOC, head.get(MOV_NUMDOC));
|
||||
riga.put(PART_DATADOC, head.get(MOV_DATADOC));
|
||||
riga.put(PART_DESCR, head.get(MOV_DESCR));
|
||||
|
||||
// Creo una nuova riga di pagamento assegnado il flag di saldo
|
||||
TRectype new_pag(LF_PAGSCA);
|
||||
if (nriga > 0 && nriga < game.UNASSIGNED)
|
||||
{
|
||||
TRiga_scadenze& scad = game.rata(nriga, nrata);
|
||||
new_pag = scad.new_row(nrigp); // Creo nuova riga e la duplico
|
||||
}
|
||||
else //se la partita non esiste si inventa il pagamento
|
||||
new_pag = game.pagamento(nriga, nrata, nrigp);
|
||||
|
||||
new_pag.put(PAGSCA_ACCSAL, 'A');
|
||||
new_pag.put(PART_IMPORTO, head.get_real(MOV_TOTDOC));
|
||||
const TValuta valuta(head);
|
||||
game.modifica_pagamento(new_pag, valuta, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Metodi di alto livello
|
||||
@ -480,7 +529,7 @@ void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log
|
||||
log.log(2, msg);
|
||||
codcf = 0L;
|
||||
}*/
|
||||
}
|
||||
} //if(codcf<=0)...
|
||||
|
||||
|
||||
//il cliente, se non nuovo, deve esistere!
|
||||
@ -572,6 +621,7 @@ void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log
|
||||
log.log(2, msg);
|
||||
}
|
||||
}
|
||||
log.log(0, "");
|
||||
}
|
||||
|
||||
//movimenti di incasso
|
||||
@ -585,16 +635,20 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log
|
||||
|
||||
//crea un movimento contabile pescando i dati dal recordset (e inventandosene qualcuno!)
|
||||
//testata
|
||||
const TDate data_incasso = recset.get("DataIncasso").as_date();
|
||||
const TString& str_dataincasso = recset.get("DataIncasso").as_string();
|
||||
const TDate data_incasso = upload_format_date6(str_dataincasso);
|
||||
const TDate datareg = data_incasso;
|
||||
const TDate datacomp = data_incasso;
|
||||
TEsercizi_contabili esc;
|
||||
const int annoes = esc.date2esc(data_incasso);
|
||||
const int anno = datareg.year();
|
||||
const long numdoc = recset.get("NumeroFattura").as_int();
|
||||
const TDate datadoc = recset.get("DataFattura").as_date();
|
||||
const TString& str_datadoc = recset.get("DataFattura").as_string();
|
||||
const TDate datadoc = upload_format_date6(str_datadoc);
|
||||
const TString4 tipodoc = recset.get("TipoDocumento").as_string();
|
||||
const real incasso = recset.get("ImportoIncassato").as_real() / CENTO;
|
||||
//il codice partita su Campo è lungo 7 mentre i terminalini lo possono inviare lungo 15 (cazzi loro..)
|
||||
const TString8 numpart = recset.get("Partita").as_string().left(7);
|
||||
|
||||
TConfig config(CONFIG_DITTA, "ha");
|
||||
const TString& codcaus = config.get("InpCausale");
|
||||
@ -619,10 +673,10 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log
|
||||
|
||||
long numreg = 999999L;
|
||||
|
||||
TString msg;
|
||||
msg << " movimento di incasso. Cliente: " << codcf << " - Agente: " << codice_agente << " - Data: " << data_incasso;
|
||||
if (_can_write)
|
||||
{
|
||||
TString msg;
|
||||
msg << " movimento di incasso. Cliente: " << codcf << " - Agente: " << codice_agente << " - Data: " << data_incasso;
|
||||
if (mov.write() != NOERR)
|
||||
{
|
||||
_can_write = false;
|
||||
@ -636,6 +690,11 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log
|
||||
numreg = head.get_long(MOV_NUMREG);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
msg.insert("Controllato");
|
||||
log.log(0, msg);
|
||||
}
|
||||
|
||||
|
||||
//righe
|
||||
@ -651,7 +710,7 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log
|
||||
//se il cliente non ha un suo conto, prova con il primo della causale incassi in configurazione
|
||||
if (zio_clifo.conto() <= 0)
|
||||
{
|
||||
caus.bill(0, zio_clifo);
|
||||
caus.bill(1, zio_clifo);
|
||||
gr_cli = zio_clifo.gruppo();
|
||||
co_cli = zio_clifo.conto();
|
||||
zio_clifo.set(gr_cli, co_cli, codcf, 'C');
|
||||
@ -665,7 +724,7 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log
|
||||
//se l'agente non ha un suo conto, prova con il secondo della causale incassi in configurazione
|
||||
if (zio_agente.conto() <= 0)
|
||||
{
|
||||
caus.bill(1, zio_agente);
|
||||
caus.bill(2, zio_agente);
|
||||
gr_age = zio_agente.gruppo();
|
||||
co_age = zio_agente.conto();
|
||||
sott_age = zio_agente.sottoconto();
|
||||
@ -676,8 +735,10 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log
|
||||
//riga 1: conto cliente
|
||||
TRectype& new_rmov_cli = mov.cg(-1);
|
||||
new_rmov_cli.put(RMV_ROWTYPE, 'K');
|
||||
new_rmov_cli.put(RMV_ANNOES, annoes);
|
||||
new_rmov_cli.put(RMV_DATAREG, datareg);
|
||||
zio_clifo.put(new_rmov_cli);
|
||||
const char sezione_cli = caus.sezione(0);
|
||||
const char sezione_cli = caus.sezione(1);
|
||||
new_rmov_cli.put(RMV_SEZIONE, sezione_cli);
|
||||
TString descr_rmv_cli;
|
||||
descr_rmv_cli << "Incasso cliente " << codcf;
|
||||
@ -687,8 +748,10 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log
|
||||
//riga 2: conto agente
|
||||
TRectype& new_rmov_age = mov.cg(-1);
|
||||
new_rmov_age.put(RMV_ROWTYPE, 'I');
|
||||
new_rmov_age.put(RMV_ANNOES, annoes);
|
||||
new_rmov_age.put(RMV_DATAREG, datareg);
|
||||
zio_agente.put(new_rmov_age);
|
||||
const char sezione_age = caus.sezione(1);
|
||||
const char sezione_age = caus.sezione(2);
|
||||
new_rmov_age.put(RMV_SEZIONE, sezione_age);
|
||||
TString descr_rmv_age;
|
||||
descr_rmv_age << "Incasso agente " << codice_agente;
|
||||
@ -697,9 +760,36 @@ void TUpload2Campo::elabora_SI(THardy_upload_recordset& recset, TLog_report& log
|
||||
new_rmov_age.put(RMV_IMPORTO, incasso);
|
||||
|
||||
//crea i pagamenti aggiornando anche la partita (qui si parrà la tua nobilitate!)
|
||||
TPartita game(zio_clifo, anno, numpart);
|
||||
const int nriga = game.prima_fattura();
|
||||
const int nrata = 1;
|
||||
//metodo magicissimo per l'aggiornamento della partita con l'incasso
|
||||
genera_incasso(game, nriga, nrata, mov, log);
|
||||
|
||||
//alla fine della fiera scrive (se può) movimento e pagamento
|
||||
|
||||
//alla fine della fiera scrive (se può) movimento e pagamento su partita
|
||||
if (_can_write)
|
||||
{
|
||||
int err = mov.rewrite();
|
||||
|
||||
TString mov_msg;
|
||||
mov_msg << " movimento di incasso n.reg.: " << numreg;
|
||||
|
||||
if (err == NOERR)
|
||||
{
|
||||
mov_msg.insert("Completato");
|
||||
log.log(0, mov_msg);
|
||||
|
||||
game.write(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
_can_write = false;
|
||||
mov_msg.insert("Impossibile completare");
|
||||
log.log(2, mov_msg);
|
||||
}
|
||||
} //if(_can_write)...
|
||||
|
||||
log.log(0, "");
|
||||
}
|
||||
|
||||
|
||||
@ -1166,7 +1256,7 @@ void TUpload2Campo::elabora(const TMask& mask)
|
||||
TString4 tipo_record = recset.rec_type();
|
||||
tipo_record.trim();
|
||||
|
||||
//"SU|VC|TF|RF|SI|BR|RC"
|
||||
//Sequenza di ordinamento dei record "SU|VC|TF|RF|SI|BR|RC": NON ATTENTATEVI A CAMBIARLA O NON FUNZIONA PIU' UN CAZZO!!
|
||||
const int pos = tipi_record.get_pos(tipo_record);
|
||||
|
||||
//trattazione dei vari tracciati record
|
||||
@ -1185,7 +1275,7 @@ void TUpload2Campo::elabora(const TMask& mask)
|
||||
//elabora_RF(recset, log); //non serve! lo fa l'elaborazione di testata
|
||||
break;
|
||||
case 4: //tipo record: SI (incasso documenti)
|
||||
//elabora_SI(recset, log);
|
||||
elabora_SI(recset, log);
|
||||
break;
|
||||
case 5: //tipo record: BR (righe movimenti magazzino)
|
||||
elabora_BR(recset, log);
|
||||
|
Loading…
x
Reference in New Issue
Block a user