Spostato il tipo di pagamento dallo sheet dei documenti a quello

delle rate. Corretti alcuni errori in inserimento/visualizzazione
rate.


git-svn-id: svn://10.65.10.50/trunk@5433 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1997-10-23 13:15:15 +00:00
parent df9fd5a87e
commit 5b25e45971
3 changed files with 74 additions and 67 deletions

View File

@ -50,8 +50,12 @@ static TString16 __current_key;
////////////////////////////////////////////////////////////////////////////////////////
// Da fare :
// - Errore: quando si elimina una rata il pgm vuota lo spreadsheet e non aggiorna il video
// con i dati del documento corrente
// - Quando si elimina l'ultima riga dello spreadsheet si posiziona sulla prima senza
// mandare un K_TAB per aggiornare le rate
// - Browse dei documenti in ricerca, quando si seleziona setta giustamente focusdirty() e manda
// un K_TAB. Quando si tenta di uscire dal campo si ha ancora il campo focusdirty()
// - Cercare di implementare scarico/saldo righe provvigionali per agente in base ad una
// impostata
// - Ultimo ma non meno importante (da ritenersi visualmente valido) lo riempimento fisso
// degli sheet (documenti e rate) in modo da evitare il fastidiosissimo sfarfallio in
// inserimento righe con elementi vuoti
@ -67,6 +71,9 @@ bool TGestione_provv_app::calcola_rate_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask();
TLocalisamfile& doc = *app()._doc;
TSheet_field & rs = (TSheet_field&)app()._msk->field(F_RATE_SHEET);// Resetta lo spreadsheet
if (rs.items() > 0) // Resetta lo spreadsheet se vi sono delle righe
rs.reset();
doc.put(DOC_PROVV,"D");
doc.put(DOC_ANNO,m.get_int(F_ANNO));
doc.put(DOC_CODNUM,m.get(F_CODNUM));
@ -84,17 +91,15 @@ bool TGestione_provv_app::calcola_rate_handler(TMask_field& f, KEY key)
m.set(F_DATACAMBIO,documento->get_date(DOC_DATACAMBIO));
m.set(F_IMPDOC,documento->totale_doc());
m.set(F_IMPPRDOC,documento->provvigione());
m.set(F_IMPNETDOC, ZERO /* documento->totale_basec() ???*/);
m.set(F_IMPNETDOC, documento->totale_netto());
// Adesso calcoliamo la provvigione all'atto della fatturazione da inserire
// nella rata 0. Il residuo va ripartito nelle rate del documento
TProvvigioni_agente& pra = documento->calc_provvigioni();
TProvvigioni_agente& pra = documento->calc_provvigioni(FALSE); // Non settare il flag di generata dal documento!
// Adesso genera le righe da mettere nello spreadsheet. Quando si uscira' dalla riga
// attuale verra' chiamata la doc_sheet_notify() con K_ENTER, che memorizza il tutto
// gestendo automaticamente la eventuale modifica di un documento gia' presente o meno.
TSheet_field & rs = (TSheet_field&)app()._msk->field(F_RATE_SHEET);// Resetta lo spreadsheet
rs.reset();
TRate_doc& rd = pra.rate(documento->anno(), m.get(F_CODNUM), documento->numero()); // Estrae le rate appena calcolate
const int numrate = rd.items(); /* Numero rate per questo documento */
for (int i = 0; i < numrate; i++)
@ -103,6 +108,7 @@ bool TGestione_provv_app::calcola_rate_handler(TMask_field& f, KEY key)
TRata& rt = rd[i];
ttt.add(rt.rata()); // Numero di rata
ttt.add(rt.datascad()); // Data scadenza della rata
ttt.add(rt.tipopag()); // Tipo pag per questa rata
ttt.add(rt.imprata().string()); // Importo della rata (occhio alla valuta)
ttt.add(rt.impprovv().string()); // Importo della provvigione per questa rata
ttt.add(""); // Tutti gli altri valori sono a 0
@ -233,10 +239,10 @@ void TGestione_provv_app::fill_rate_doc(TRate_doc& rd, TSheet_field& sf)
bool TGestione_provv_app::rate_sheet_notify(TSheet_field& ds, int r, KEY key)
{
if (__current_key.empty())
TProvvigioni_agente* pa = app()._prag;
if (__current_key.empty() || pa->items() == 0)
return TRUE;
TProvvigioni_agente* pa = app()._prag;
TRate_doc& rd = pa->rate(__current_key);
switch (key)
@ -244,7 +250,7 @@ bool TGestione_provv_app::rate_sheet_notify(TSheet_field& ds, int r, KEY key)
case K_INS: // Inserimento di una nuova rata vuota
{
TRata* rt = new TRata;
rt->set_generata(); // Nuova rata: va segnalata come inserita
// Nuova rata: va segnalata come inserita (generata = blank)
rd.add_rata(rt);
app()._dirty = TRUE;
}
@ -308,6 +314,7 @@ bool TGestione_provv_app::doc_sheet_notify(TSheet_field& ds, int r, KEY key)
TToken_string& ttt = rs.row(i);
ttt.add(rt.rata());
ttt.add(rt.datascad());
ttt.add(rt.tipopag());
ttt.add(rt.imprata().string());
ttt.add(rt.impprovv().string());
ttt.add(rt.pagmat().string());
@ -353,6 +360,12 @@ bool TGestione_provv_app::doc_sheet_notify(TSheet_field& ds, int r, KEY key)
case K_DEL: // Rimozione della riga r
// Rimuove il documento e le rate
pa->remove_rate(__current_key);
if (pa->items() == 0)
{
TSheet_field& rs = (TSheet_field&) ds.mask().field(F_RATE_SHEET);
if (rs.items() > 0) // Resetta lo spreadsheet se vi sono delle righe
rs.reset();
}
app()._dirty = TRUE;
break;
default:
@ -421,7 +434,7 @@ void TGestione_provv_app::fill_sheet_doc()
tt.add(rd.ndoc()); tt.add(rd.datadoc());
tt.add(rd.impdoc().string()); tt.add(rd.impprdoc().string());
tt.add(rd.impnet().string()); tt.add(rd.codcf());
tt.add(rd.tipo()); tt.add(rd.codval());
tt.add(rd.codval());
tt.add(rd.cambio().string()); tt.add(rd.datacam());
}
}

View File

@ -17,23 +17,23 @@
#define F_IMPPRDOC 106
#define F_IMPNETDOC 107
#define F_CLIENTE 108
#define F_TIPOPAG 109
#define F_CODVAL 110
#define F_CAMBIO 111
#define F_DATACAMBIO 112
#define F_RAGCLI 113
#define F_CODVAL 109
#define F_CAMBIO 110
#define F_DATACAMBIO 111
#define F_RAGCLI 112
// Sheet rate
#define F_RATA 101
#define F_DATASCAD 102
#define F_IMPRATA 103
#define F_IMPPROVV 104
#define F_PAGMAT 105
#define F_PROVVMAT 106
#define F_PAGATO 107
#define F_PROVVPAG 108
#define F_SALDATA 109
#define F_TIPOPAGPR 110
#define F_TIPOPAG 103
#define F_IMPRATA 104
#define F_IMPPROVV 105
#define F_PAGMAT 106
#define F_PROVVMAT 107
#define F_PAGATO 108
#define F_PROVVPAG 109
#define F_SALDATA 110
#define F_TIPOPAGPR 111
#define DLG_ENABLE 401

View File

@ -57,7 +57,6 @@ BEGIN
ITEM "Provvigione\ndocumento@18"
ITEM "Base di calcolo@18"
ITEM "Cliente"
ITEM "Tipo\npag."
ITEM "Valuta"
ITEM "Cambio"
ITEM "Data\ncambio@10"
@ -69,6 +68,7 @@ BEGIN
PROMPT 2 12 ""
ITEM "Nr. rata"
ITEM "Data scadenza"
ITEM "Tipo\npag."
ITEM "Importo\nrata@18"
ITEM "Importo\nprovvigione@18"
ITEM "Pagamento\nmaturato@18"
@ -121,12 +121,6 @@ BEGIN
OUTPUT F_ANNO ANNO
OUTPUT F_CODNUM CODNUM
OUTPUT F_NDOC NDOC
// OUTPUT F_DATADOC DATADOC
// OUTPUT F_CLIENTE CODCF
// OUTPUT F_CODVAL CODVAL
// OUTPUT F_CAMBIO CAMBIO
// OUTPUT F_DATACAMBIO DATACAMBIO
OUTPUT F_TIPOPAG -401->S4
ADD RUN VE0 -1
END
@ -176,20 +170,6 @@ BEGIN
FLAGS "D"
END
LISTBOX F_TIPOPAG 1 20
BEGIN
PROMPT 2 9 "Tipo pagamento "
ITEM "1|Rimessa diretta"
ITEM "2|Tratta"
ITEM "3|Ri.Ba."
ITEM "4|Cessione"
ITEM "5|Paghero'"
ITEM "6|Lettera di cred."
ITEM "7|Tratta accettata"
ITEM "8|Rapp. int. dir."
ITEM "9|Bonifici"
END
STRING F_CODVAL 3
BEGIN
PROMPT 2 11 "Codice valuta "
@ -234,7 +214,7 @@ ENDMASK
// Maschera spreadsheet delle rate
PAGE "" -1 -1 76 14
PAGE "" -1 -1 76 15
NUMBER F_RATA 4
BEGIN
@ -246,37 +226,35 @@ BEGIN
PROMPT 2 2 "Data scadenza "
END
LISTBOX F_TIPOPAG 1 20
BEGIN
PROMPT 2 3 "Tipo pagamento "
ITEM "1|Rimessa diretta"
ITEM "2|Tratta"
ITEM "3|Ri.Ba."
ITEM "4|Cessione"
ITEM "5|Paghero'"
ITEM "6|Lettera di cred."
ITEM "7|Tratta accettata"
ITEM "8|Rapp. int. dir."
ITEM "9|Bonifici"
END
NUMBER F_IMPRATA 18 2
BEGIN
PROMPT 2 3 "Importo rata "
PROMPT 2 4 "Importo rata "
PICTURE "."
END
NUMBER F_IMPPROVV 18 2
BEGIN
PROMPT 2 4 "Importo provvigione "
PROMPT 2 5 "Importo provvigione "
PICTURE "."
END
NUMBER F_PAGMAT 18 2
BEGIN
PROMPT 2 7 "Importo pagamento maturato "
PICTURE "."
NUM_EXPR {(#THIS_FIELD <= #F_IMPRATA)}
WARNING "L'importo pagamento maturato deve essere minore dell'importo della rata"
END
NUMBER F_PROVVMAT 18 2
BEGIN
PROMPT 2 8 "Importo provvigione maturata "
PICTURE "."
NUM_EXPR {(#THIS_FIELD <= #F_IMPPROVV)}
WARNING "L'importo provvigione maturata deve essere minore dell'importo della provvigione"
END
NUMBER F_PAGATO 18 2
BEGIN
PROMPT 2 5 "Importo rata pagata "
PROMPT 2 6 "Importo rata pagata "
PICTURE "."
FLAGS "D"
GROUP 5
@ -284,20 +262,36 @@ END
NUMBER F_PROVVPAG 18 2
BEGIN
PROMPT 2 6 "Importo provvigione pagata "
PROMPT 2 7 "Importo provvigione pagata "
PICTURE "."
FLAGS "D"
GROUP 5
END
NUMBER F_PAGMAT 18 2
BEGIN
PROMPT 2 8 "Importo pagamento maturato "
PICTURE "."
NUM_EXPR {(#THIS_FIELD <= #F_IMPRATA)}
WARNING "L'importo pagamento maturato deve essere minore dell'importo della rata"
END
NUMBER F_PROVVMAT 18 2
BEGIN
PROMPT 2 9 "Importo provvigione maturata "
PICTURE "."
NUM_EXPR {(#THIS_FIELD <= #F_IMPPROVV)}
WARNING "L'importo provvigione maturata deve essere minore dell'importo della provvigione"
END
BOOLEAN F_SALDATA
BEGIN
PROMPT 2 9 "Rata saldata "
PROMPT 2 10 "Rata saldata "
END
LISTBOX F_TIPOPAGPR 1 20
BEGIN
PROMPT 2 10 "Tipo pagamento "
PROMPT 2 11 "Tipo pagamento "
ITEM "1|Rimessa diretta"
ITEM "2|Tratta"
ITEM "3|Ri.Ba."