Patch level : 10.0
Files correlati : lv4 Ricompilazione Demo : [ ] Commento : Corretta importazione partite aperte da COGECO git-svn-id: svn://10.65.10.50/trunk@20003 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b5f3f979c1
commit
9b208509b7
@ -1033,7 +1033,7 @@ void TFatturazione_lavanderie::campi_raggruppamento_righe(TToken_string& campi_r
|
|||||||
//se lo standard lascia campi_riga vuota, allora la pongo uguale a "CODART|UMQTA"
|
//se lo standard lascia campi_riga vuota, allora la pongo uguale a "CODART|UMQTA"
|
||||||
//che sono sicuramente sempre uguali
|
//che sono sicuramente sempre uguali
|
||||||
if (campi_riga.empty())
|
if (campi_riga.empty())
|
||||||
campi_riga = "CODART|UMQTA"; // Uguali sempre
|
campi_riga = RDOC_CODART"|"RDOC_UMQTA; // Uguali sempre
|
||||||
}
|
}
|
||||||
|
|
||||||
//FIND_OR_CREATE_ROW: questo metodo cerca tra tutte le righe documento della fattura prodotta
|
//FIND_OR_CREATE_ROW: questo metodo cerca tra tutte le righe documento della fattura prodotta
|
||||||
|
@ -23,7 +23,8 @@ struct TStruttura: public TObject
|
|||||||
long _qta;
|
long _qta;
|
||||||
TStruttura():_cliente(0),_numeroDoc(0),_qta(0) {}
|
TStruttura():_cliente(0),_numeroDoc(0),_qta(0) {}
|
||||||
TStruttura(long cliente, const TString& articolo, const TString& descr,
|
TStruttura(long cliente, const TString& articolo, const TString& descr,
|
||||||
TDate dataDoc, int numeroDoc, long qta):_cliente(cliente),_articolo(articolo),_descr(descr),_dataDoc(dataDoc),_numeroDoc(numeroDoc),_qta(qta) {}
|
TDate dataDoc, int numeroDoc, long qta):_cliente(cliente),_articolo(articolo),
|
||||||
|
_descr(descr),_dataDoc(dataDoc),_numeroDoc(numeroDoc),_qta(qta) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TStrutturaData: public TObject
|
struct TStrutturaData: public TObject
|
||||||
|
168
lv/lv4200.cpp
168
lv/lv4200.cpp
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
enum CGC_SALDAC { CGC_NULL, CGC_TIPOCF, CGC_ANNO, CGC_NUMPART, CGC_CODCF,
|
enum CGC_SALDAC { CGC_NULL, CGC_TIPOCF, CGC_ANNO, CGC_NUMPART, CGC_CODCF,
|
||||||
CGC_NUMEROREC, CGC_CAMBIO, CGC_VALUTA, CGC_TIPODOC, CGC_DATADOC,
|
CGC_NUMEROREC, CGC_CAMBIO, CGC_VALUTA, CGC_TIPODOC, CGC_DATADOC,
|
||||||
CGC_SCADENZA, CGC_IMPORTO, CGC_IMPORTO_VAL };
|
CGC_SCADENZA, CGC_IMPORTO, CGC_IMPORTO_VAL,CGC_NUMDOC };
|
||||||
|
|
||||||
class TCausali_cache : public TCache
|
class TCausali_cache : public TCache
|
||||||
{
|
{
|
||||||
@ -33,7 +33,7 @@ protected:
|
|||||||
virtual TObject* key2obj(const char* key);
|
virtual TObject* key2obj(const char* key);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const TCausale& causale(char tipocf, tipo_movimento tm, const TDate& datadoc);
|
const TCausale& causale(char tipocf, tipo_movimento tm);
|
||||||
void init(const char* cln, const char* frn) { _cln = cln; _frn = frn; }
|
void init(const char* cln, const char* frn) { _cln = cln; _frn = frn; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -41,9 +41,6 @@ TObject* TCausali_cache::key2obj(const char* key)
|
|||||||
{
|
{
|
||||||
const char tipocf = key[0];
|
const char tipocf = key[0];
|
||||||
const tipo_movimento tm = tipo_movimento(key[1]-'0');
|
const tipo_movimento tm = tipo_movimento(key[1]-'0');
|
||||||
int anno = atoi(key + 2);
|
|
||||||
if (anno <= 0)
|
|
||||||
anno = TDate(TODAY).year();
|
|
||||||
|
|
||||||
TString4 codcaus;
|
TString4 codcaus;
|
||||||
if (tm == tm_fattura)
|
if (tm == tm_fattura)
|
||||||
@ -57,16 +54,15 @@ TObject* TCausali_cache::key2obj(const char* key)
|
|||||||
if (caus.move_first())
|
if (caus.move_first())
|
||||||
codcaus = caus.get(CAU_CODCAUS).as_string();
|
codcaus = caus.get(CAU_CODCAUS).as_string();
|
||||||
}
|
}
|
||||||
TCausale* pcaus = new TCausale(codcaus, anno);
|
TCausale* pcaus = new TCausale(codcaus);
|
||||||
return pcaus;
|
return pcaus;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TCausale& TCausali_cache::causale(const char tipocf, tipo_movimento tm, const TDate& datadoc)
|
const TCausale& TCausali_cache::causale(const char tipocf, tipo_movimento tm)
|
||||||
{
|
{
|
||||||
// Metodo bastardo per evitare TToken_string temporanee "a randa"
|
// Metodo bastardo per evitare TToken_string temporanee "a randa"
|
||||||
// creo chiave a lunghezza fissa TIPOCF+TIPOMOV = C1
|
// creo chiave a lunghezza fissa TIPOCF+TIPOMOV+ANNO = C12010
|
||||||
TString8 key;
|
const char key[4] = { tipocf, '0'+tm, '\0' };
|
||||||
key.format("%c%1d%4d" , tipocf, tm, datadoc.year());
|
|
||||||
return *(const TCausale*)objptr(key);
|
return *(const TCausale*)objptr(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,28 +87,26 @@ bool TImporta_sc_mask::on_field_event(TOperable_field& f, TField_event e, long j
|
|||||||
{
|
{
|
||||||
switch (f.dlg())
|
switch (f.dlg())
|
||||||
{
|
{
|
||||||
//giochetto per avere la lista dei files validi nella directory di trasferimento!
|
//giochetto per avere la lista dei files validi nella directory di trasferimento!
|
||||||
case F_NAME:
|
case F_NAME:
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"), "File@32");
|
||||||
|
TFilename path = get(F_PATH);
|
||||||
|
path.add("*.txt"); //file da importare
|
||||||
|
list_files(path, as.rows_array());
|
||||||
|
TFilename name;
|
||||||
|
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
|
||||||
{
|
{
|
||||||
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"), "File@32");
|
name = *row;
|
||||||
TFilename path = get(F_PATH);
|
*row = name.name();
|
||||||
path.add("*.txt"); //file da importare
|
|
||||||
list_files(path, as.rows_array());
|
|
||||||
TFilename name;
|
|
||||||
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
|
|
||||||
{
|
|
||||||
name = *row;
|
|
||||||
*row = name.name();
|
|
||||||
}
|
|
||||||
if (as.run() == K_ENTER)
|
|
||||||
{
|
|
||||||
f.set(as.row(as.selected()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
if (as.run() == K_ENTER)
|
||||||
default:
|
f.set(as.row(as.selected()));
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -128,17 +122,18 @@ class TImporta_sc : public TSkeleton_application
|
|||||||
TBill _clienti, _fornitori;
|
TBill _clienti, _fornitori;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void nuovo_pagamento_o_nota(const TImporta_cogeco_recset& recset, TPartita& game, tipo_movimento tm);
|
void nuovo_pagamento_o_nota(const TImporta_cogeco_recset& recset, TPartita& game, tipo_movimento tm, bool is_riba);
|
||||||
bool paga_rata(TPartita& game, int nrata, int nrigp, real& importo) const;
|
bool paga_rata(TPartita& game, int nrata, int nrigp, real& importo) const;
|
||||||
|
void set_descr(TRectype& rec) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool log_error(TLog_report& log, const char* msg, const TRecordset& recset);
|
bool log_error(TLog_report& log, const char* msg, const TRecordset& recset);
|
||||||
const TCausale& causale(char tipocf, tipo_movimento tm, const TDate& datadoc);
|
const TCausale& causale(char tipocf, tipo_movimento tm);
|
||||||
char get_tmcf(int gruppo, int conto) const;
|
char get_tmcf(int gruppo, int conto) const;
|
||||||
bool find_clifo_bill(char tipocf, int& gruppo, int& conto, long sottoconto);
|
bool find_clifo_bill(char tipocf, int& gruppo, int& conto, long sottoconto);
|
||||||
|
|
||||||
TRiga_partite& nuova_fattura(const TImporta_cogeco_recset& recset, TPartita& game);
|
TRiga_partite& nuova_fattura(const TImporta_cogeco_recset& recset, TPartita& game);
|
||||||
void nuova_scadenza(const TImporta_cogeco_recset& recset, TPartita& game);
|
void nuova_scadenza(const TImporta_cogeco_recset& recset, TPartita& game, bool is_riba);
|
||||||
void nuova_riba(const TImporta_cogeco_recset& recset, TPartita& game);
|
void nuova_riba(const TImporta_cogeco_recset& recset, TPartita& game);
|
||||||
void nuovo_pagamento(const TImporta_cogeco_recset& recset, TPartita& game);
|
void nuovo_pagamento(const TImporta_cogeco_recset& recset, TPartita& game);
|
||||||
void nuova_nota_credito(const TImporta_cogeco_recset& recset, TPartita& game);
|
void nuova_nota_credito(const TImporta_cogeco_recset& recset, TPartita& game);
|
||||||
@ -153,8 +148,8 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Cerca una causale appropriata in base a TIPOCF (C o F) e TIPOMOV (1, 2, 3, ...)
|
// Cerca una causale appropriata in base a TIPOCF (C o F) e TIPOMOV (1, 2, 3, ...)
|
||||||
const TCausale& TImporta_sc::causale(char tipocf, tipo_movimento tm, const TDate& datadoc)
|
const TCausale& TImporta_sc::causale(char tipocf, tipo_movimento tm)
|
||||||
{ return _cache_causali.causale(tipocf, tm, datadoc); }
|
{ return _cache_causali.causale(tipocf, tm); }
|
||||||
|
|
||||||
// Ricava il campo TMCF (Cliente o Fornitore) di un dato conto
|
// Ricava il campo TMCF (Cliente o Fornitore) di un dato conto
|
||||||
char TImporta_sc::get_tmcf(int gruppo, int conto) const
|
char TImporta_sc::get_tmcf(int gruppo, int conto) const
|
||||||
@ -189,8 +184,7 @@ bool TImporta_sc::find_clifo_bill(char tipocf, int& gruppo, int& conto, long sot
|
|||||||
if (!found)
|
if (!found)
|
||||||
{
|
{
|
||||||
// Cerca sulla prima riga dellla causale
|
// Cerca sulla prima riga dellla causale
|
||||||
const TDate datadoc(TODAY);
|
const TCausale& caus = causale(tipocf, tm_fattura);
|
||||||
const TCausale& caus = causale(tipocf, tm_fattura, datadoc);
|
|
||||||
TBill bill; caus.bill(1, bill);
|
TBill bill; caus.bill(1, bill);
|
||||||
gruppo = bill.gruppo();
|
gruppo = bill.gruppo();
|
||||||
conto = bill.conto();
|
conto = bill.conto();
|
||||||
@ -216,6 +210,33 @@ bool TImporta_sc::find_clifo_bill(char tipocf, int& gruppo, int& conto, long sot
|
|||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TImporta_sc::set_descr(TRectype& rec) const
|
||||||
|
{
|
||||||
|
TString descr;
|
||||||
|
descr << "*** ";
|
||||||
|
switch (rec.num())
|
||||||
|
{
|
||||||
|
case LF_SCADENZE:
|
||||||
|
descr << TR("Rata") << ' ' << rec.get(SCAD_NRATA);
|
||||||
|
rec.put(SCAD_DESCR, descr);
|
||||||
|
break;
|
||||||
|
case LF_PARTITE:
|
||||||
|
switch (tipo_movimento(rec.get_int(PART_TIPOMOV)))
|
||||||
|
{
|
||||||
|
case tm_fattura : descr << TR("Fattura") << ' '
|
||||||
|
<< rec.get(PART_ANNO) << '/' << rec.get(PART_NUMDOC); break;
|
||||||
|
case tm_nota_credito: descr << TR("Nota di credito")
|
||||||
|
<< rec.get(PART_ANNO) << '/' << rec.get(PART_NUMDOC); break;
|
||||||
|
case tm_insoluto : descr << TR("Insoluto"); break;
|
||||||
|
default : descr << TR("Pagamento"); break;
|
||||||
|
}
|
||||||
|
rec.put(PART_DESCR, descr);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Aggiunge una nuova riga fattura a 'game' in base ai dati in 'recset'
|
// Aggiunge una nuova riga fattura a 'game' in base ai dati in 'recset'
|
||||||
TRiga_partite& TImporta_sc::nuova_fattura(const TImporta_cogeco_recset& recset, TPartita& game)
|
TRiga_partite& TImporta_sc::nuova_fattura(const TImporta_cogeco_recset& recset, TPartita& game)
|
||||||
{
|
{
|
||||||
@ -227,10 +248,12 @@ TRiga_partite& TImporta_sc::nuova_fattura(const TImporta_cogeco_recset& recset,
|
|||||||
const TDate datadoc = recset.get_date(CGC_DATADOC);
|
const TDate datadoc = recset.get_date(CGC_DATADOC);
|
||||||
fattura.put(PART_DATAREG, datadoc);
|
fattura.put(PART_DATAREG, datadoc);
|
||||||
fattura.put(PART_DATADOC, datadoc);
|
fattura.put(PART_DATADOC, datadoc);
|
||||||
fattura.put(PART_DESCR, TR("*** Fattura gnerata da COGECO ***"));
|
const long numdoc = recset.get(CGC_NUMDOC).as_int();
|
||||||
|
if (numdoc > 0)
|
||||||
|
fattura.put(PART_NUMDOC, numdoc);
|
||||||
|
|
||||||
const char tipocf = game.conto().tipo();
|
const char tipocf = game.conto().tipo();
|
||||||
const TCausale& caus = causale(tipocf, tm_fattura, datadoc);
|
const TCausale& caus = causale(tipocf, tm_fattura);
|
||||||
if (caus.ok())
|
if (caus.ok())
|
||||||
{
|
{
|
||||||
fattura.put(PART_CODCAUS, caus.codice());
|
fattura.put(PART_CODCAUS, caus.codice());
|
||||||
@ -243,6 +266,8 @@ TRiga_partite& TImporta_sc::nuova_fattura(const TImporta_cogeco_recset& recset,
|
|||||||
fattura.put(PART_TIPOMOV, tm_fattura);
|
fattura.put(PART_TIPOMOV, tm_fattura);
|
||||||
fattura.put(PART_SEZ, tipocf == 'C' ? 'D' : 'A');
|
fattura.put(PART_SEZ, tipocf == 'C' ? 'D' : 'A');
|
||||||
}
|
}
|
||||||
|
set_descr(fattura);
|
||||||
|
|
||||||
nriga = fattura.get_int(PART_NRIGA);
|
nriga = fattura.get_int(PART_NRIGA);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,7 +282,7 @@ TRiga_partite& TImporta_sc::nuova_fattura(const TImporta_cogeco_recset& recset,
|
|||||||
|
|
||||||
// Aggiunge una nuova rata alla UNICA fattura di 'game'.
|
// Aggiunge una nuova rata alla UNICA fattura di 'game'.
|
||||||
// Attenzione: in assenza di fattura ne viene creata una "al volo" di pari importo.
|
// Attenzione: in assenza di fattura ne viene creata una "al volo" di pari importo.
|
||||||
void TImporta_sc::nuova_scadenza(const TImporta_cogeco_recset& recset, TPartita& game)
|
void TImporta_sc::nuova_scadenza(const TImporta_cogeco_recset& recset, TPartita& game, bool is_riba)
|
||||||
{
|
{
|
||||||
int nriga = game.prima_fattura(); // PART_NRIGA della fattura (solitamente = 1)
|
int nriga = game.prima_fattura(); // PART_NRIGA della fattura (solitamente = 1)
|
||||||
if (nriga <= 0) // Se non ci sono fattura in questa partita ...
|
if (nriga <= 0) // Se non ci sono fattura in questa partita ...
|
||||||
@ -266,12 +291,28 @@ void TImporta_sc::nuova_scadenza(const TImporta_cogeco_recset& recset, TPartita&
|
|||||||
nriga = game.prima_fattura(); // Aggiorno PART_NRIGA che valeva -1
|
nriga = game.prima_fattura(); // Aggiorno PART_NRIGA che valeva -1
|
||||||
}
|
}
|
||||||
TRiga_partite& fattura = game.riga(nriga); // Accedo alla riga di fattura, che ora DEVE esistere!
|
TRiga_partite& fattura = game.riga(nriga); // Accedo alla riga di fattura, che ora DEVE esistere!
|
||||||
TRiga_scadenze& scadenza = fattura.new_row(); // Creo nuova rata, alla faccia di SCAD_CODPAG
|
|
||||||
|
|
||||||
|
// Se la scadenza coincide o precede l'ultima, non creo una rata nuova
|
||||||
|
const TDate datascad = recset.get_date(CGC_SCADENZA);
|
||||||
|
int nrata = fattura.rate();
|
||||||
|
if (nrata > 0)
|
||||||
|
{
|
||||||
|
const TRiga_scadenze& rata = fattura.rata(nrata);
|
||||||
|
if (datascad > rata.get_date(SCAD_DATASCAD))
|
||||||
|
nrata = 0; // Devo creare una rata nuova
|
||||||
|
}
|
||||||
|
if (nrata <= 0)
|
||||||
|
{
|
||||||
|
TRiga_scadenze& scadenza = fattura.new_row(); // Creo nuova rata, alla faccia di SCAD_CODPAG
|
||||||
|
nrata = scadenza.get_int(SCAD_NRATA); // valeva 0
|
||||||
|
scadenza.put(SCAD_DATASCAD, recset.get_date(CGC_SCADENZA));
|
||||||
|
scadenza.put(SCAD_TIPOPAG, is_riba ? 3 : 1);
|
||||||
|
set_descr(scadenza);
|
||||||
|
}
|
||||||
|
|
||||||
|
TRiga_scadenze& scadenza = fattura.rata(nrata);
|
||||||
const real importo = recset.get_real(CGC_IMPORTO);
|
const real importo = recset.get_real(CGC_IMPORTO);
|
||||||
scadenza.put(SCAD_DATASCAD, recset.get_date(CGC_SCADENZA));
|
scadenza.add(SCAD_IMPORTO, importo);
|
||||||
scadenza.put(SCAD_IMPORTO, importo);
|
|
||||||
scadenza.put(SCAD_DESCR, TR("*** Rata generata da COGECO ***"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TImporta_sc::paga_rata(TPartita& game, int nrata, int nrigp, real& importo) const
|
bool TImporta_sc::paga_rata(TPartita& game, int nrata, int nrigp, real& importo) const
|
||||||
@ -293,6 +334,7 @@ bool TImporta_sc::paga_rata(TPartita& game, int nrata, int nrigp, real& importo)
|
|||||||
rpag.put(field[k], scadenza.get(field[k]));
|
rpag.put(field[k], scadenza.get(field[k]));
|
||||||
rpag.put(PAGSCA_NRIGP, nrigp); // Completa la chiave di PAGSCA col numero riga di partita
|
rpag.put(PAGSCA_NRIGP, nrigp); // Completa la chiave di PAGSCA col numero riga di partita
|
||||||
rpag.put(PAGSCA_IMPORTO, pagare);
|
rpag.put(PAGSCA_IMPORTO, pagare);
|
||||||
|
rpag.put(PAGSCA_ACCSAL, pagare >= residuo ? 'S' : 'A');
|
||||||
const TValuta euro;
|
const TValuta euro;
|
||||||
game.modifica_pagamento(rpag, euro, true); // Speriamo che faccia tutto lei :-)
|
game.modifica_pagamento(rpag, euro, true); // Speriamo che faccia tutto lei :-)
|
||||||
importo -= pagare;
|
importo -= pagare;
|
||||||
@ -303,7 +345,7 @@ bool TImporta_sc::paga_rata(TPartita& game, int nrata, int nrigp, real& importo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Aggiunge una nuova riga tipo 2 (n.c.) o 3 (pag.) alla partita
|
// Aggiunge una nuova riga tipo 2 (n.c.) o 3 (pag.) alla partita
|
||||||
void TImporta_sc::nuovo_pagamento_o_nota(const TImporta_cogeco_recset& recset, TPartita& game, tipo_movimento tm)
|
void TImporta_sc::nuovo_pagamento_o_nota(const TImporta_cogeco_recset& recset, TPartita& game, tipo_movimento tm, bool is_riba)
|
||||||
{
|
{
|
||||||
// Crea una nuova riga di partita
|
// Crea una nuova riga di partita
|
||||||
TRiga_partite& pagamento = game.new_row();
|
TRiga_partite& pagamento = game.new_row();
|
||||||
@ -313,13 +355,17 @@ void TImporta_sc::nuovo_pagamento_o_nota(const TImporta_cogeco_recset& recset, T
|
|||||||
pagamento.put(PART_DATAREG, datadoc);
|
pagamento.put(PART_DATAREG, datadoc);
|
||||||
pagamento.put(PART_DATADOC, datadoc);
|
pagamento.put(PART_DATADOC, datadoc);
|
||||||
if (tm == tm_nota_credito)
|
if (tm == tm_nota_credito)
|
||||||
pagamento.put(PART_DESCR, TR("*** Nota di credito generata da COGECO ***"));
|
{
|
||||||
|
const long numdoc = recset.get(CGC_NUMDOC).as_int();
|
||||||
|
if (numdoc > 0)
|
||||||
|
pagamento.put(PART_NUMDOC, numdoc);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
pagamento.put(PART_DESCR, TR("*** Pagamento generato da COGECO ***"));
|
pagamento.put(PART_DATAPAG, datadoc);
|
||||||
|
|
||||||
// Cerca di inizlizzare la riga con una causale appropriata
|
// Cerca di inizlizzare la riga con una causale appropriata
|
||||||
const char tipocf = game.conto().tipo();
|
const char tipocf = game.conto().tipo();
|
||||||
const TCausale& caus = causale(tipocf, tm, datadoc);
|
const TCausale& caus = causale(tipocf, tm);
|
||||||
if (caus.ok())
|
if (caus.ok())
|
||||||
{
|
{
|
||||||
pagamento.put(PART_CODCAUS, caus.codice());
|
pagamento.put(PART_CODCAUS, caus.codice());
|
||||||
@ -332,6 +378,7 @@ void TImporta_sc::nuovo_pagamento_o_nota(const TImporta_cogeco_recset& recset, T
|
|||||||
pagamento.put(PART_TIPOMOV, tm);
|
pagamento.put(PART_TIPOMOV, tm);
|
||||||
pagamento.put(PART_SEZ, tipocf == 'F' ? 'D' : 'A');
|
pagamento.put(PART_SEZ, tipocf == 'F' ? 'D' : 'A');
|
||||||
}
|
}
|
||||||
|
set_descr(pagamento); // Ora sono certo del TIPOMOV e posso generare la descrizione
|
||||||
|
|
||||||
// Somma da distribuire sulle rate aperte
|
// Somma da distribuire sulle rate aperte
|
||||||
real importo = recset.get_real(CGC_IMPORTO);
|
real importo = recset.get_real(CGC_IMPORTO);
|
||||||
@ -373,7 +420,15 @@ void TImporta_sc::nuovo_pagamento_o_nota(const TImporta_cogeco_recset& recset, T
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (best_rata > 0)
|
if (best_rata > 0)
|
||||||
|
{
|
||||||
|
if (is_riba)
|
||||||
|
{
|
||||||
|
const TRiga_scadenze& rata = fattura.rata(best_rata);
|
||||||
|
if (rata.get_int(SCAD_TIPOPAG) == 3) // Per le RIBA precisa la data pagamento
|
||||||
|
pagamento.put(PART_DATAPAG, rata.get(SCAD_DATASCAD));
|
||||||
|
}
|
||||||
paga_rata(game, best_rata, nrigp, importo);
|
paga_rata(game, best_rata, nrigp, importo);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -390,6 +445,7 @@ void TImporta_sc::nuovo_pagamento_o_nota(const TImporta_cogeco_recset& recset, T
|
|||||||
rpag.put(PAGSCA_NRATA, 9999); // Questo 9999 significa "rata ignota"
|
rpag.put(PAGSCA_NRATA, 9999); // Questo 9999 significa "rata ignota"
|
||||||
rpag.put(PAGSCA_NRIGP, nrigp); // Completa la chiave di PAGSCA col numero riga di partita
|
rpag.put(PAGSCA_NRIGP, nrigp); // Completa la chiave di PAGSCA col numero riga di partita
|
||||||
rpag.put(PAGSCA_IMPORTO, importo);
|
rpag.put(PAGSCA_IMPORTO, importo);
|
||||||
|
rpag.put(PAGSCA_ACCSAL, 'A'); // Gli ancticipi sono sempre in acconto :-)
|
||||||
const TValuta euro;
|
const TValuta euro;
|
||||||
game.modifica_pagamento(rpag, euro, true);
|
game.modifica_pagamento(rpag, euro, true);
|
||||||
}
|
}
|
||||||
@ -399,17 +455,17 @@ void TImporta_sc::nuovo_pagamento_o_nota(const TImporta_cogeco_recset& recset, T
|
|||||||
// per cui in CAMPO viene aperta una scadenza ed immediatamente chiusa col relativo pagamento
|
// per cui in CAMPO viene aperta una scadenza ed immediatamente chiusa col relativo pagamento
|
||||||
void TImporta_sc::nuova_riba(const TImporta_cogeco_recset& recset, TPartita& game)
|
void TImporta_sc::nuova_riba(const TImporta_cogeco_recset& recset, TPartita& game)
|
||||||
{
|
{
|
||||||
nuova_scadenza(recset, game);
|
nuova_scadenza(recset, game, true);
|
||||||
nuovo_pagamento(recset, game);
|
nuovo_pagamento_o_nota(recset, game, tm_pagamento, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creo una nuova riga partita corrispondente ad una riga pagamento in PAGSCA
|
// Creo una nuova riga partita corrispondente ad una riga pagamento in PAGSCA
|
||||||
void TImporta_sc::nuovo_pagamento(const TImporta_cogeco_recset& recset, TPartita& game)
|
void TImporta_sc::nuovo_pagamento(const TImporta_cogeco_recset& recset, TPartita& game)
|
||||||
{ nuovo_pagamento_o_nota(recset, game, tm_pagamento); }
|
{ nuovo_pagamento_o_nota(recset, game, tm_pagamento, false); }
|
||||||
|
|
||||||
// Creo una nuova riga partita corrispondente ad una riga nota di credito in PAGSCA
|
// Creo una nuova riga partita corrispondente ad una riga nota di credito in PAGSCA
|
||||||
void TImporta_sc::nuova_nota_credito(const TImporta_cogeco_recset& recset, TPartita& game)
|
void TImporta_sc::nuova_nota_credito(const TImporta_cogeco_recset& recset, TPartita& game)
|
||||||
{ nuovo_pagamento_o_nota(recset, game, tm_nota_credito); }
|
{ nuovo_pagamento_o_nota(recset, game, tm_nota_credito, false); }
|
||||||
|
|
||||||
// Creo una nuova riga partita corrispondente ad una riga di insoluto PAGSCA
|
// Creo una nuova riga partita corrispondente ad una riga di insoluto PAGSCA
|
||||||
bool TImporta_sc::nuovo_insoluto(const TImporta_cogeco_recset& recset, TPartita& game, TLog_report& log)
|
bool TImporta_sc::nuovo_insoluto(const TImporta_cogeco_recset& recset, TPartita& game, TLog_report& log)
|
||||||
@ -457,11 +513,10 @@ bool TImporta_sc::nuovo_insoluto(const TImporta_cogeco_recset& recset, TPartita&
|
|||||||
|
|
||||||
insoluto.put(PART_DATAREG, datadoc);
|
insoluto.put(PART_DATAREG, datadoc);
|
||||||
insoluto.put(PART_DATADOC, datadoc);
|
insoluto.put(PART_DATADOC, datadoc);
|
||||||
insoluto.put(PART_DESCR, TR("*** Insoluto trasferito da COGECO ***"));
|
|
||||||
insoluto.put(PART_IMPTOTDOC, importo);
|
insoluto.put(PART_IMPTOTDOC, importo);
|
||||||
|
|
||||||
const char tipocf = game.conto().tipo();
|
const char tipocf = game.conto().tipo();
|
||||||
const TCausale& caus = causale(tipocf, tm_insoluto, datadoc);
|
const TCausale& caus = causale(tipocf, tm_insoluto);
|
||||||
if (caus.ok())
|
if (caus.ok())
|
||||||
{
|
{
|
||||||
insoluto.put(PART_CODCAUS, caus.codice());
|
insoluto.put(PART_CODCAUS, caus.codice());
|
||||||
@ -474,6 +529,7 @@ bool TImporta_sc::nuovo_insoluto(const TImporta_cogeco_recset& recset, TPartita&
|
|||||||
insoluto.put(PART_TIPOMOV, tm_insoluto);
|
insoluto.put(PART_TIPOMOV, tm_insoluto);
|
||||||
insoluto.put(PART_SEZ, fattura.sezione());
|
insoluto.put(PART_SEZ, fattura.sezione());
|
||||||
}
|
}
|
||||||
|
set_descr(insoluto);
|
||||||
paga_rata(game, best_rata, nrigp, importo);
|
paga_rata(game, best_rata, nrigp, importo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -576,7 +632,7 @@ void TImporta_sc::transfer(const TFilename& file)
|
|||||||
TImporta_cogeco_recset recset(file);
|
TImporta_cogeco_recset recset(file);
|
||||||
recset.sort(game_sorter);
|
recset.sort(game_sorter);
|
||||||
|
|
||||||
TString caption; _msk->get_caption(caption);
|
const TString& caption = main_app().title();
|
||||||
TProgind pi(recset.items(), caption, true, true);
|
TProgind pi(recset.items(), caption, true, true);
|
||||||
|
|
||||||
TConfig* conf = NULL;
|
TConfig* conf = NULL;
|
||||||
@ -664,7 +720,7 @@ void TImporta_sc::transfer(const TFilename& file)
|
|||||||
case 11: nuovo_pagamento(recset, *game); break; // Pagamento
|
case 11: nuovo_pagamento(recset, *game); break; // Pagamento
|
||||||
case 13: nuova_nota_credito(recset, *game); break; // Nota di credito su RB clienti
|
case 13: nuova_nota_credito(recset, *game); break; // Nota di credito su RB clienti
|
||||||
case 14: nuova_nota_credito(recset, *game); break; // Abbuono
|
case 14: nuova_nota_credito(recset, *game); break; // Abbuono
|
||||||
case 15: nuova_scadenza(recset, *game); break;
|
case 15: nuova_scadenza(recset, *game, false); break;
|
||||||
case 18: nuova_riba(recset, *game); break; // Paghero'
|
case 18: nuova_riba(recset, *game); break; // Paghero'
|
||||||
case 19: nuova_riba(recset, *game); break; // Avviso di scadenza
|
case 19: nuova_riba(recset, *game); break; // Avviso di scadenza
|
||||||
case 20: nuova_riba(recset, *game); break; // R.I.D.
|
case 20: nuova_riba(recset, *game); break; // R.I.D.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user