diff --git a/pr/pr0700.cpp b/pr/pr0700.cpp index 96221b6c5..85ac64afd 100755 --- a/pr/pr0700.cpp +++ b/pr/pr0700.cpp @@ -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()); } } diff --git a/pr/pr0700b.h b/pr/pr0700b.h index a75078e45..0e438d9ca 100755 --- a/pr/pr0700b.h +++ b/pr/pr0700b.h @@ -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 diff --git a/pr/pr0700b.uml b/pr/pr0700b.uml index daef82533..2b528a581 100755 --- a/pr/pr0700b.uml +++ b/pr/pr0700b.uml @@ -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."