Prosegue la saga della generazione partite da saldi contabili

git-svn-id: svn://10.65.10.50/trunk@1659 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-07-31 10:36:38 +00:00
parent 4f75fae164
commit e4671edff7
3 changed files with 56 additions and 86 deletions

View File

@ -28,7 +28,7 @@ protected:
virtual bool destroy();
virtual bool menu(MENU_TAG m);
long get_last_partita(bool check_erase);
bool zap_partite(bool check_erase);
public:
@ -60,7 +60,7 @@ bool TCreatepart_app::destroy()
}
long TCreatepart_app::get_last_partita(bool zap)
bool TCreatepart_app::zap_partite(bool zap)
{
// ritorna il primo valore utile per partita temporanea AP;
// se ce ne sono gia' propone la cancellazione e se ok
@ -68,14 +68,16 @@ long TCreatepart_app::get_last_partita(bool zap)
_partite->zero();
_partite->put(PART_ANNO, _anno);
_partite->put(PART_NUMPART, "*");
long last = 0l;
bool go = _partite->read(_isgteq) == NOERR;
if (zap && go)
zap = yesno_box("Esistono gia' partite generate in base ai"
" saldi contabili. Si desidera cancellarle?");
zap = yesno_box("Il saldaconto per l'esercizio scelto non e' vuoto."
" La procedura lo azzera completamente."
" Si desidera proseguire?");
if (zap && go)
zap = yesno_box("Confermare l'azzeramento del saldaconto esistente");
while (go)
{
@ -97,27 +99,28 @@ long TCreatepart_app::get_last_partita(bool zap)
}
}
}
else last = atol(_partite->get(PART_NUMPART).mid(2)) + 1l;
go = _partite->next() == NOERR &&
_partite->get(PART_NUMPART).mid(0,2) == "AP";
go = _partite->next() == NOERR;
}
return last;
return zap;
}
bool TCreatepart_app::is_clifo(int g, int c, char& cf)
{
static int gr = -1, ct = -1;
// TBI deve ritornare QUANTI sono i conti in cui appare lo stesso
// cliente; se piu' di uno deve creare n rate, una per cliente
if (g != gr || c != ct)
{
_conti->zero();
_conti->put(PCN_GRUPPO, g);
_conti->put(PCN_CONTO, c);
if (_conti->read() != NOERR)
error_box("Piano dei conti disallineato con archivio saldi");
if (_conti->read() != NOERR)
// TBC c'era un'error_box: ci vuole?
return FALSE;
gr = g; ct = c;
}
@ -135,9 +138,9 @@ bool TCreatepart_app::menu(MENU_TAG)
TRelation saldi(LF_SALDI);
saldi.zero();
TDate data(TODAY);
TString80 desccl = "Apertura clienti al "; desccl << data.string();
TString80 descfo = "Apertura fornitori al "; descfo << data.string();
TDate today(TODAY);
TString80 desccl = "Apertura clienti al "; desccl << today.string();
TString80 descfo = "Apertura fornitori al "; descfo << today.string();
m.set(F_DESCCL, desccl);
m.set(F_DESCFO, descfo);
@ -145,14 +148,10 @@ bool TCreatepart_app::menu(MENU_TAG)
while (m.run() != K_QUIT)
{
int n_part = 0;
TString16 codpag(m.get(F_CODPAG));
desccl = m.get(F_DESCCL);
descfo = m.get(F_DESCFO);
TPagamento pag(codpag, data.string());
m.set(F_NUMPART, format("%d",n_part));
_anno = m.get_int(F_ANNO);
@ -189,12 +188,16 @@ bool TCreatepart_app::menu(MENU_TAG)
TString16 id;
real val(saldo.valore());
pag.set_total(val, ZERO, ZERO);
pag.set_rate_auto();
// TPagamento pag(codpag, today.string());
// pag.set_total(val, ZERO, ZERO);
// pag.set_rate_auto();
// sputtana tutto il saldaculo
if (!zap_partite(hw == 0)) return FALSE;
// determina ultima partita; la prima volta,
// se ce n'e' chiedi se si vuole cancellare
long last_partita = get_last_partita(hw == 0);
long last_partita = 1l;
// apri partita dimmerda
id << format("*%05ld", last_partita);
@ -204,34 +207,44 @@ bool TCreatepart_app::menu(MENU_TAG)
_partite->put(PART_NUMPART, id);
_partite->put(PART_NUMRIG, 1);
_partite->put(PART_NRIGA, 1);
_partite->put(PART_DATAREG, data);
_partite->put(PART_DATADOC, data);
_partite->put(PART_DATAREG, today);
_partite->put(PART_DATADOC, today);
_partite->put(PART_SEZ, saldo.sezione());
_partite->put(PART_IMPORTO, saldo.valore());
_partite->put(PART_CODPAG, codpag);
// _partite->put(PART_CODPAG, codpag);
_partite->put(PART_CODVAL, "LIT");
_partite->put(PART_TIPOCF, cf);
_partite->put(PART_GRUPPO, gruppo);
_partite->put(PART_CONTO, conto);
_partite->put(PART_GRUPPOCL, gruppo);
_partite->put(PART_CONTOCL, conto);
_partite->put(PART_SOTTOCONTO,sottoc);
_partite->put(PART_DESCR, cf == 'C' ? desccl : descfo);
// cazzata dare/avere/fare/baciare/cagare
int tipo = (cf == 'C' ? (saldo.sezione() == 'D' ? 1 : 3) :
(saldo.sezione() == 'D' ? 3 : 1));
_partite->put(PART_TIPOMOV, tipo);
_partite->write();
// apri scadenze dimmerda
for (int i = 0; i < pag.n_rate(); i++)
// apri scadenze dimmerda: tante quanti clienti ci sono
// TBI vedi n. clienti
int nclienti = 1;
for (int i = 0; i < nclienti; i++)
{
_scadenze->zero();
_scadenze->put(SCAD_ANNO, _anno);
_scadenze->put(SCAD_NUMPART, id);
_scadenze->put(SCAD_NRATA, i+1);
_scadenze->put(SCAD_CODPAG, codpag);
_scadenze->put(SCAD_ULTCLASS, pag.ulc_rata(i));
_scadenze->put(SCAD_TIPOPAG, pag.tipo_rata(i));
_scadenze->put(SCAD_IMPORTO, pag.tpay_rata(i));
_scadenze->put(SCAD_DATASCAD, pag.data_rata(i));
// _scadenze->put(SCAD_CODPAG, codpag);
// _scadenze->put(SCAD_ULTCLASS, pag.ulc_rata(i));
// _scadenze->put(SCAD_TIPOPAG, pag.tipo_rata(i));
_scadenze->put(SCAD_IMPORTO, val/real((double)nclienti));
// _scadenze->put(SCAD_DATASCAD, pag.data_rata(i));
_scadenze->put(SCAD_TIPOCF, cf);
_scadenze->put(SCAD_GRUPPO, gruppo);
_scadenze->put(SCAD_CONTO, conto);
// _scadenze->put(SCAD_GRUPPO, gruppo);
// _scadenze->put(SCAD_CONTO, conto);
_scadenze->put(SCAD_SOTTOCONTO, sottoc);
_scadenze->write();
}
@ -244,7 +257,7 @@ bool TCreatepart_app::menu(MENU_TAG)
end_wait();
}
else
message_box("Nessun saldo presente per l'anno %d", _anno);
message_box("Nessun saldo presente per l'esercizio %d", _anno);
} // while run
return FALSE;

View File

@ -1,8 +1,4 @@
#define F_ANNO 101
#define F_NUMPART 102
#define F_DATA 103
#define F_CODPAG 104
#define F_CAUSCL 105
#define F_CAUSFO 106
#define F_DESCCL 107
#define F_DESCFO 108
#define F_DESCCL 103
#define F_DESCFO 104

View File

@ -25,7 +25,7 @@ END
NUMBER F_ANNO 4
BEGIN
PROMPT 1 6 "Anno esercizio "
PROMPT 1 7 "Anno esercizio "
USE ESC
INPUT CODTAB F_ANNO
DISPLAY "Anno Esercizio" CODTAB
@ -37,61 +37,22 @@ BEGIN
WARNING "L' anno di esercizio e' obbligatorio"
END
STRING F_CODPAG 4
BEGIN
PROMPT 32 6 "Pagamento "
HELP "Codice del pagamento concordato per il movimento"
FIELD CODPAG
FLAGS "UZ"
USE %CPG
INPUT CODTAB F_CODPAG
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODPAG CODTAB
CHECKTYPE REQUIRED
ADD RUN ba3 -6
WARNING "Codice pagamento obbligatorio"
END
STRING F_DESCCL 40
BEGIN
PROMPT 1 7 "Descrizione clienti "
PROMPT 1 8 "Descrizione clienti "
FLAGS "A"
END
STRING F_DESCFO 40
BEGIN
PROMPT 1 8 "Descrizione fornitori "
PROMPT 1 9 "Descrizione fornitori "
FLAGS "A"
END
STRING F_CAUSCL 3
BEGIN
PROMPT 1 9 "Causale riferimento clienti "
USE LF_CAUSALI SELECT MOVSEZ=="X"
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
INPUT CODCAUS F_CAUSCL
OUTPUT F_CAUSCL CODCAUS
CHECKTYPE REQUIRED
ADD RUN cg0 -4
END
STRING F_CAUSFO 3
BEGIN
PROMPT 1 10 "Causale riferimento fornitori "
COPY USE F_CAUSCL
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
INPUT CODCAUS F_CAUSFO
OUTPUT F_CAUSFO CODCAUS
CHECKTYPE REQUIRED
ADD RUN cg0 -4
END
NUMBER F_NUMPART 3
BEGIN
PROMPT 1 11 "N. partite aperte "
PROMPT 1 11 "N. partite aperte "
FLAGS "D"
END