Patch level : 10.0 606

Files correlati     : lv4.exe
Ricompilazione Demo : [ ]
Commento            :

Aggiunta creazione file ini per le fatture in sospensione aperte


git-svn-id: svn://10.65.10.50/trunk@20068 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2010-02-08 08:45:02 +00:00
parent 488f191f0d
commit 633e835a96
3 changed files with 103 additions and 5 deletions

View File

@ -1,5 +1,6 @@
#include <applicat.h>
#include <automask.h>
#include <execp.h>
#include <progind.h>
#include <relation.h>
#include <reputils.h>
@ -133,12 +134,13 @@ protected:
bool find_clifo_bill(char tipocf, int& gruppo, int& conto, long sottoconto);
TRiga_partite& nuova_fattura(const TImporta_cogeco_recset& recset, TPartita& game);
long fattura_in_sospensione(const TImporta_cogeco_recset& recset, const TRiga_partite& rigafat, long nmov);
void nuova_scadenza(const TImporta_cogeco_recset& recset, TPartita& game, bool is_riba);
void nuova_riba(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);
bool nuovo_insoluto(const TImporta_cogeco_recset& recset, TPartita& game, TLog_report& log);
void salva_partita(TPartita*& game);
void salva_partita(TPartita*& game, long nmov);
public:
virtual bool create();
@ -280,6 +282,38 @@ TRiga_partite& TImporta_sc::nuova_fattura(const TImporta_cogeco_recset& recset,
return fattura;
}
long TImporta_sc::fattura_in_sospensione(const TImporta_cogeco_recset& recset, const TRiga_partite& rigafat, long nmov)
{
TFilename temp(_msk->get(F_PATHOUT));
temp << '/' << format("%05ld", nmov++);
temp.ext("ini");
if (fexist(temp))
remove_file(temp);
TConfig conf(temp);
conf.set_paragraph("Transaction"); //setto il paragrafo [Transaction] del file ini
conf.set("Action","INSERT");
conf.set("Mode","AUTO");
conf.set_paragraph("23"); //setto il paragrafo [23] del file ini (testata)
conf.set(MOV_CODCAUS, rigafat.get(PART_CODCAUS));
conf.set(MOV_DATAREG, rigafat.get_date(PART_DATAREG));
conf.set(MOV_CODPAG, rigafat.get(PART_CODPAG));
conf.set(MOV_DATADOC, rigafat.get(PART_DATADOC));
conf.set(MOV_NUMDOC, rigafat.get(PART_NUMDOC));
conf.set("SOLAIVA", "X");
conf.set(MOV_STAMPATO, "X");
conf.set(MOV_REGST, "X");
conf.set(MOV_NUMDOC, rigafat.get(PART_DESCR));
conf.set(MOV_TIPO, rigafat.get(PART_TIPOCF));
conf.set(MOV_CODCF, rigafat.get(PART_SOTTOCONTO));
conf.set(MOV_TOTDOC, rigafat.get(PART_IMPTOTDOC));
conf.set("CODIVA", _msk->get(F_CODIVA));
return nmov;
}
// Aggiunge una nuova rata alla UNICA fattura di 'game'.
// 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, bool is_riba)
@ -616,11 +650,20 @@ static int game_sorter(const TObject** o1, const TObject** o2)
return cmp;
}
void TImporta_sc::salva_partita(TPartita*& game)
void TImporta_sc::salva_partita(TPartita*& game, long nmov)
{
if (game != NULL)
{
game->write();
if (game->chiusa(true))
{
TFilename temp(_msk->get(F_PATHOUT));
temp << '/' << format("%05ld", nmov--);
temp.ext("ini");
if (fexist(temp))
remove_file(temp);
}
delete game;
game = NULL;
}
@ -643,6 +686,7 @@ void TImporta_sc::transfer(const TFilename& file)
TToken_string key;
const TString& codcausc = _msk->get(F_CODCAUSC);
const TString& codcausf = _msk->get(F_CODCAUSF);
long nmov = 1L;
TLog_report log(caption);
@ -661,7 +705,7 @@ void TImporta_sc::transfer(const TFilename& file)
if (tipocf != t || sottoconto != s || anno != a || p != part)
{
salva_partita(game); // Salva parita corrente se non nulla
salva_partita(game, nmov); // Salva parita corrente se non nulla
TToken_string key; key.format("%c|%ld", t, s);
const TRectype& clifo = cache().get(LF_CLIFO, key);
@ -709,7 +753,13 @@ void TImporta_sc::transfer(const TFilename& file)
{
case 1: nuova_fattura(recset, *game); break; // Fattura
case 2: nuova_nota_credito(recset, *game); break; // Nota di credito
case 3: nuova_fattura(recset, *game); break; // Fattura in sospensione
case 3:
{
const TRiga_partite & rigafat = nuova_fattura(recset, *game);
nmov = fattura_in_sospensione( recset, rigafat, nmov);
break;
} // Fattura in sospensione
case 4: nuova_nota_credito(recset, *game); break; // Reso su fattura in sospensione
case 5: nuovo_pagamento(recset, *game); break; // Pagamento fattura in sospeso
case 6: nuovo_insoluto(recset, *game, log); break; // Insoluto
@ -727,8 +777,16 @@ void TImporta_sc::transfer(const TFilename& file)
}
}
}
salva_partita(game); // Salva ultima partita se non nulla
salva_partita(game, nmov); // Salva ultima partita se non nulla
if (nmov > 1 && yesno_box(FR("Si desidera confermare l'importazione di %ld fatture in sospensione"), nmov - 1))
{
TString app;
app << "cg2 -0 -i" << _msk->get(F_PATHOUT) << "/*.ini";
TExternal_app primanota(app);
primanota.run(true);
}
if (log.recordset()->items() > 0)
log.preview();
}

View File

@ -8,4 +8,7 @@
#define F_CODCAUSF 106
#define F_DESCRCAUSC 107
#define F_DESCRCAUSF 108
#define F_CODIVA 109
#define F_DESCRIVA 110
#define F_PATHOUT 111

View File

@ -108,6 +108,43 @@ BEGIN
CHECKTYPE REQUIRED
END
STRING F_CODIVA 3
BEGIN
PROMPT 3 12 "IVA sosp. "
FLAGS "U"
USE %IVA
INPUT CODTAB F_CODIVA
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@60" S0
OUTPUT F_CODIVA CODTAB
OUTPUT F_DESCRIVA S0
CHECKTYPE REEQUIRED
END
STRING F_DESCRIVA 50
BEGIN
PROMPT 20 12 ""
USE %IVA KEY 2
INPUT DESCR F_DESCRIVA
DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CODIVA
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 90 2
BEGIN
PROMPT 2 13 "Destinazione"
END
STRING F_PATHOUT 256 39
BEGIN
PROMPT 3 14 "Cartella "
DSELECT
CHECKTYPE REQUIRED
FIELD ComOutPath
END
ENDPAGE
ENDMASK