Correzioni su errori da PR

git-svn-id: svn://10.65.10.50/trunk@2504 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1996-01-25 17:20:49 +00:00
parent c0af0706e0
commit 05609d3324
12 changed files with 173 additions and 85 deletions

View File

@ -106,6 +106,7 @@ TMask* TPrimanota_application::load_mask(int n)
ism.set_handler(102, codiva_handler); ism.set_handler(102, codiva_handler);
ism.set_handler(103, detrazione_handler); ism.set_handler(103, detrazione_handler);
ism.set_handler(104, imposta_handler); ism.set_handler(104, imposta_handler);
ism.set_handler(107, cg_gruppo_handler);
ism.set_handler(109, iva_sottoconto_handler); ism.set_handler(109, iva_sottoconto_handler);
ism.set_handler(110, iva_sottoconto_handler); ism.set_handler(110, iva_sottoconto_handler);
ism.set_handler(209, sheet_clifo_handler); ism.set_handler(209, sheet_clifo_handler);
@ -151,14 +152,15 @@ TMask* TPrimanota_application::load_mask(int n)
cg.set_notify(cg_notify); cg.set_notify(cg_notify);
TMask& cgm = cg.sheet_mask(); TMask& cgm = cg.sheet_mask();
cgm.set_handler(101, dareavere_handler); cgm.set_handler(CG_DARE, dareavere_handler);
cgm.set_handler(102, dareavere_handler); cgm.set_handler(CG_AVERE, dareavere_handler);
cgm.set_handler(105, cg_conto_handler); cgm.set_handler(CG_GRUPPO, cg_gruppo_handler);
cgm.set_handler(106, suspended_handler); cgm.set_handler(CG_CONTO, cg_conto_handler);
cgm.set_handler(206, sheet_clifo_handler); cgm.set_handler(CG_SOTTOCONTO, suspended_handler);
cgm.set_handler(306, sheet_clifo_handler); cgm.set_handler(CG_SOTTOCONTO + 100, sheet_clifo_handler);
cgm.set_handler(112, suspended_handler); cgm.set_handler(CG_SOTTOCONTO + 200, sheet_clifo_handler);
cgm.set_handler(113, suspended_handler);
cgm.set_handler(113, suspended_handler); // Contropartita
cgm.set_handler(213, sheet_clifo_handler); cgm.set_handler(213, sheet_clifo_handler);
cgm.set_handler(313, sheet_clifo_handler); cgm.set_handler(313, sheet_clifo_handler);
} }
@ -619,15 +621,17 @@ bool TPrimanota_application::test_swap(bool ritsoc)
int TPrimanota_application::read(TMask& m) int TPrimanota_application::read(TMask& m)
{ {
m.autoload(_rel); m.autoload(_rel); // Carica testata
const long numreg = _rel->curr().get_long(MOV_NUMREG); const long numreg = _rel->curr().get_long(MOV_NUMREG);
cgs().reset(); partite().destroy(); // Azzera tutte le partite
cgs().reset(); // Azzera tutte le righe contabili
if (iva() != nessuna_iva) if (iva() != nessuna_iva)
{ {
ivas().reset(); ivas().reset(); // Azzera tutte le righe iva
const TString16 occode(_rel->lfile().get("OCFPI")); const TString16 occode(_rel->lfile().get("OCFPI"));
occas_mask().set(O_CODICE, occode); occas_mask().set(O_CODICE, occode);
@ -712,7 +716,6 @@ int TPrimanota_application::read(TMask& m)
calcola_imp(); // Calcola totale imponibile ed imposte calcola_imp(); // Calcola totale imponibile ed imposte
partite().destroy();
if (is_fattura()) // Ci sono scadenze if (is_fattura()) // Ci sono scadenze
{ {
if (!read_scadenze(m)) if (!read_scadenze(m))

View File

@ -35,8 +35,9 @@
#define F_RITFIS 120 #define F_RITFIS 120
#define F_RITSOC 121 #define F_RITSOC 121
#define F_CODPAG 122 #define F_CODPAG 122
#define F_ANNORIF 123 #define F_DESPAG 123
#define F_NUMRIF 124 #define F_ANNORIF 124
#define F_NUMRIF 125
#define F_PROVVISORIO 129 #define F_PROVVISORIO 129
#define F_TIPOMOV 130 #define F_TIPOMOV 130
#define F_OCCASEDIT 131 #define F_OCCASEDIT 131
@ -56,6 +57,16 @@
#define F_SHEETCG 190 #define F_SHEETCG 190
#define F_SHEETIVA 191 #define F_SHEETIVA 191
// Sheet contabile
#define CG_DARE 101
#define CG_AVERE 102
#define CG_TIPO 103
#define CG_GRUPPO 104
#define CG_CONTO 105
#define CG_SOTTOCONTO 106
#define CG_ROWTYPE 116
// Campi ripetuti sulla seconda pagina // Campi ripetuti sulla seconda pagina
#define H_DATAREG 201 #define H_DATAREG 201
#define H_NUMREG 202 #define H_NUMREG 202

View File

@ -204,21 +204,6 @@ BEGIN
WARNING "Inserire un riepilogo non inferiore al protocollo IVA (Obbigatorio se il cliete/fornitore ha codice inserimento in allegati uguale a 3)" WARNING "Inserire un riepilogo non inferiore al protocollo IVA (Obbigatorio se il cliete/fornitore ha codice inserimento in allegati uguale a 3)"
END END
STRING F_CODPAG 4
BEGIN
PROMPT 60 9 "Pagamento "
FIELD CODPAG
FLAGS "UZ"
USE %CPG
INPUT CODTAB F_CODPAG
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODPAG CODTAB
CHECKTYPE NORMAL
ADD RUN ba3 -6
WARNING "Codice pagamento errato"
END
STRING F_CLIFO 1 STRING F_CLIFO 1
BEGIN BEGIN
PROMPT 0 10 "" PROMPT 0 10 ""
@ -388,9 +373,31 @@ BEGIN
FLAGS "H" FLAGS "H"
END END
STRING F_CODPAG 4
BEGIN
PROMPT 1 12 "Codice Pagamento "
FIELD CODPAG
FLAGS "UZ"
USE %CPG
INPUT CODTAB F_CODPAG
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODPAG CODTAB
OUTPUT F_DESPAG S0
CHECKTYPE NORMAL
ADD RUN ba3 -6
WARNING "Codice pagamento errato"
END
STRING F_DESPAG 50
BEGIN
PROMPT 27 12 ""
FLAGS "D"
END
STRING SK_VALUTA 3 STRING SK_VALUTA 3
BEGIN BEGIN
PROMPT 1 12 "Valuta " PROMPT 1 13 "Valuta "
FIELD CODVAL FIELD CODVAL
FLAGS "UZ" FLAGS "UZ"
GROUP 3 GROUP 3
@ -405,7 +412,7 @@ END
DATE SK_DATACAMBIO DATE SK_DATACAMBIO
BEGIN BEGIN
PROMPT 28 12 "Data cambio " PROMPT 28 13 "Data cambio "
FIELD DATACAM FIELD DATACAM
FLAGS "R" FLAGS "R"
USE CAM USE CAM
@ -422,7 +429,7 @@ END
NUMBER SK_CAMBIO 15 5 NUMBER SK_CAMBIO 15 5
BEGIN BEGIN
PROMPT 55 12 "Cambio " PROMPT 55 13 "Cambio "
FIELD CAMBIO FIELD CAMBIO
FLAGS "RU" FLAGS "RU"
GROUP 3 GROUP 3
@ -432,14 +439,14 @@ END
NUMBER F_TOTALE 15 NUMBER F_TOTALE 15
BEGIN BEGIN
PROMPT 1 13 "Totale documento " PROMPT 1 14 "Totale documento "
FIELD TOTDOC FIELD TOTDOC
PICTURE "." PICTURE "."
END END
NUMBER SK_TOTDOCVAL 15 3 NUMBER SK_TOTDOCVAL 15 3
BEGIN BEGIN
PROMPT 35 13 "Tot. in valuta " PROMPT 35 14 "Tot. in valuta "
FIELD TOTDOCVAL FIELD TOTDOCVAL
GROUP 3 GROUP 3
PICTURE ".3" PICTURE ".3"
@ -448,7 +455,7 @@ END
STRING F_CODIVA 4 STRING F_CODIVA 4
BEGIN BEGIN
PROMPT 67 13 "IVA " PROMPT 67 14 "IVA "
FLAGS "U" FLAGS "U"
USE %IVA USE %IVA
INPUT CODTAB F_CODIVA INPUT CODTAB F_CODIVA
@ -464,7 +471,7 @@ END
NUMBER F_RITFIS 15 NUMBER F_RITFIS 15
BEGIN BEGIN
PROMPT 1 14 "Ritenute fiscali " PROMPT 1 15 "Ritenute fiscali "
FIELD RITFIS FIELD RITFIS
FLAGS "RV" FLAGS "RV"
PICTURE "." PICTURE "."
@ -472,7 +479,7 @@ END
NUMBER F_RITSOC 15 NUMBER F_RITSOC 15
BEGIN BEGIN
PROMPT 1 15 "Ritenute sociali " PROMPT 1 16 "Ritenute sociali "
FIELD RITSOC FIELD RITSOC
FLAGS "RV" FLAGS "RV"
PICTURE "." PICTURE "."
@ -480,7 +487,7 @@ END
DATE F_DATA74TER DATE F_DATA74TER
BEGIN BEGIN
PROMPT 54 14 "Data 74/ter " PROMPT 54 15 "Data 74/ter "
WARNING "E' richiesta la data del 74/ter" WARNING "E' richiesta la data del 74/ter"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD DATA74TER FIELD DATA74TER
@ -488,14 +495,14 @@ END
NUMBER F_ANNORIF 4 NUMBER F_ANNORIF 4
BEGIN BEGIN
PROMPT 50 15 "Rif.partita " PROMPT 50 16 "Rif.partita "
FIELD LF_PARTITE->ANNO FIELD LF_PARTITE->ANNO
FLAGS "U" FLAGS "U"
END END
STRING F_NUMRIF 7 STRING F_NUMRIF 7
BEGIN BEGIN
PROMPT 68 15 "/ " PROMPT 68 16 "/ "
FIELD LF_PARTITE->NUMPART FIELD LF_PARTITE->NUMPART
FLAGS "U" FLAGS "U"
END END
@ -520,7 +527,7 @@ END
NUMBER F_CAMBIOINTRA 15 5 NUMBER F_CAMBIOINTRA 15 5
BEGIN BEGIN
PROMPT 37 17 "Cambio intracom. " PROMPT 41 17 "Cambio intracomun. "
FIELD CAMBIOI FIELD CAMBIOI
FLAGS "RU" FLAGS "RU"
GROUP 4 GROUP 4
@ -538,7 +545,7 @@ END
NUMBER F_CORRVALUTA 15 3 NUMBER F_CORRVALUTA 15 3
BEGIN BEGIN
PROMPT 37 18 "Corrispettivo valuta " PROMPT 41 18 "Corrispettivo valuta "
FIELD CORRVALUTA FIELD CORRVALUTA
FLAGS "R" FLAGS "R"
PICTURE ".3" PICTURE ".3"

View File

@ -186,7 +186,7 @@ int TMovimentoPN::registra(bool re, bool force)
return err; return err;
const int annoiva = m.get_int("ANNOIVA"); const int annoiva = m.get_int("ANNOIVA");
const TString16 reg(m.get_str("REG")); const TString reg(m.get_str("REG"));
TRegistro registro(reg, annoiva); TRegistro registro(reg, annoiva);
const bool att_mista = reg.empty() ? FALSE : registro.attivita_mista(); const bool att_mista = reg.empty() ? FALSE : registro.attivita_mista();
@ -260,7 +260,7 @@ int TMovimentoPN::remove(TDate&)
const TRectype& m = curr(); const TRectype& m = curr();
const TDate datareg(m.get("DATAREG")); const TDate datareg(m.get("DATAREG"));
const int annoiva = m.get_int("ANNOIVA"); const int annoiva = m.get_int("ANNOIVA");
const TString16 reg(m.get_str("REG")); const TString reg(m.get_str("REG"));
TRegistro registro(reg, annoiva); TRegistro registro(reg, annoiva);
controlla_liquidazione(datareg, registro, TRUE); controlla_liquidazione(datareg, registro, TRUE);
} }

View File

@ -8,6 +8,7 @@
#include "cg21sld.h" #include "cg21sld.h"
#include <mov.h> #include <mov.h>
#include <rmov.h>
#include <clifo.h> #include <clifo.h>
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -236,11 +237,11 @@ TImporto TPrimanota_application::get_cgs_imp(int n)
const TMask& m = s.sheet_mask(); const TMask& m = s.sheet_mask();
if (m.is_running() && s.selected() == n) if (m.is_running() && s.selected() == n)
{ {
const TString& imp = m.get(101); const TString& imp = m.get(CG_DARE);
if (imp.not_empty()) if (imp.not_empty())
importo.set('D', real(imp)); importo.set('D', real(imp));
else else
importo.set('A', real(m.get(102))); importo.set('A', real(m.get(CG_AVERE)));
} }
else else
importo = s.row(n); importo = s.row(n);
@ -770,6 +771,10 @@ bool TPrimanota_application::cg_notify(TSheet_field& cg, int r, KEY k)
static TImporto old_spesa; static TImporto old_spesa;
CHECKD(r >= 0, "Chi e' quel ca$$one che notifica la riga ", r); CHECKD(r >= 0, "Chi e' quel ca$$one che notifica la riga ", r);
if (k == K_CTRL + K_DEL)
return TRUE; // Ritorna subito, altrimenti crea riga vuota
TToken_string& row = cg.row(r); TToken_string& row = cg.row(r);
const char tipo = row_type(row); // Tipo della riga in esame const char tipo = row_type(row); // Tipo della riga in esame
@ -897,8 +902,9 @@ bool TPrimanota_application::dareavere_handler(TMask_field& f, KEY k)
const TImporto speso = app().partite().importo_speso(numreg, numrig); const TImporto speso = app().partite().importo_speso(numreg, numrig);
const char* ss = speso.valore().string(); const char* ss = speso.valore().string();
TMask& m = f.mask(); TMask& m = f.mask();
m.set(101, speso.sezione() == 'D' ? ss : ""); m.set(CG_DARE, speso.sezione() == 'D' ? ss : "");
m.set(102, speso.sezione() == 'A' ? ss : ""); m.set(CG_AVERE, speso.sezione() == 'A' ? ss : "");
app().calcola_saldo();
} }
if (k == K_TAB && f.focusdirty() && f.get().not_empty()) if (k == K_TAB && f.focusdirty() && f.get().not_empty())
@ -1333,24 +1339,45 @@ bool TPrimanota_application::iva_handler(TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
// Il gruppo non possiede una ricerca propria per cui se viene variato richiama
// quella del conto.
bool TPrimanota_application::cg_gruppo_handler(TMask_field& f, KEY key)
{
if (key == K_TAB && f.focusdirty())
{
TEdit_field& conto = f.mask().efield(f.dlg()+1);
const TRectype& curr = conto.browse()->cursor()->curr();
if (curr.get(RMV_GRUPPO) != f.get()) // Se non e' gia' posizionato ...
conto.check(RUNNING_CHECK); // ... forza ricerca sul conto
}
return TRUE;
}
bool TPrimanota_application::cg_conto_handler(TMask_field& f, KEY key) bool TPrimanota_application::cg_conto_handler(TMask_field& f, KEY key)
{ {
bool ok = TRUE;
if (key == K_ENTER) if (key == K_ENTER)
{ {
TMask& m = f.mask(); TMask& m = f.mask();
if (m.get(115)[0] == 'T') // Se riga totale documento if (m.get(CG_ROWTYPE)[0] == 'T') // Se riga totale documento
{ {
const char cf = m.get(f.dlg()-2)[0]; char cf = m.get(f.dlg()-2)[0];
char tipo = app().clifo(); if (cf < ' ') cf = ' '; // Tipo conto della riga
if (app().causale().corrispettivi()) tipo = ' ';
if (cf != tipo) char tipo = ' '; // Tipo conto richiesto dal movimento
if (!app().causale().corrispettivi())
tipo = app().clifo();
if (cf != tipo) // Incongruenza!
{ {
const char* d = tipo == ' ' ? "normale" : (tipo == 'C' ? "clienti" : "fornitori"); const char* d = tipo == ' ' ? "normale" : (tipo == 'C' ? "clienti" : "fornitori");
return f.error_box("E' richiesto un conto %s.", d); ok = f.error_box("La riga totale richiede un conto %s.", d);
} }
} }
} }
return TRUE;
return ok;
} }
// Gestore del sottoconto dello sheet IVA // Gestore del sottoconto dello sheet IVA
@ -1866,10 +1893,19 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
TEdit_field& upi = m.efield(F_RIEPILOGO); TEdit_field& upi = m.efield(F_RIEPILOGO);
upi.check_type(alleg == 3 ? CHECK_REQUIRED : CHECK_NORMAL); upi.check_type(alleg == 3 ? CHECK_REQUIRED : CHECK_NORMAL);
if (m.insert_mode() && app().is_fattura() && m.get(F_CODPAG).empty()) if (m.insert_mode() && m.get(F_CODPAG).empty())
{ {
const TString& s = clifo.get(CLI_CODPAG); const TString& s = clifo.get(CLI_CODPAG);
m.set(F_CODPAG, s, s.not_empty()); if (s.not_empty())
{
TEdit_field& cp = m.efield(F_CODPAG);
if (cp.active()) // Se il campo F_CODPAG e' attivo
{
cp.set(s); // Setta il codice di pagamento sulla maschera
cp.check(RUNNING_CHECK); // lo decodifica
cp.on_hit(); // lo ricopia eventualmente a pag.3
}
}
} }
if (f.focusdirty() && app().is_saldaconto()) if (f.focusdirty() && app().is_saldaconto())

View File

@ -106,6 +106,7 @@ class TPrimanota_application : public TRelation_application
static bool codiva_handler(TMask_field& f, KEY key); static bool codiva_handler(TMask_field& f, KEY key);
static bool imposta_handler(TMask_field& f, KEY key); static bool imposta_handler(TMask_field& f, KEY key);
static bool dareavere_handler(TMask_field& f, KEY k); static bool dareavere_handler(TMask_field& f, KEY k);
static bool cg_gruppo_handler(TMask_field& f, KEY key);
static bool cg_conto_handler(TMask_field& f, KEY key); static bool cg_conto_handler(TMask_field& f, KEY key);
static bool codpag_handler(TMask_field& f, KEY key); static bool codpag_handler(TMask_field& f, KEY key);

View File

@ -290,12 +290,14 @@ bool TPrimanota_application::tipopag_handler(TMask_field& f, KEY key)
bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
{ {
bool ok = TRUE;
TMask& m = f.mask(); TMask& m = f.mask();
const bool set_scad = m.field(F_NUMRIF).active() && !m.get(F_NUMRIF).blank();
if (key == K_ENTER) if (key == K_ENTER)
{ {
const bool required = (m.insert_mode() && !m.get_bool(F_SOLAIVA)) || const bool required = (m.insert_mode() && !m.get_bool(F_SOLAIVA)) || set_scad;
!m.get(F_NUMRIF).blank();
if (required && f.get().empty()) if (required && f.get().empty())
{ {
error_box("Il codice di pagamento e' obbligatorio!\n" error_box("Il codice di pagamento e' obbligatorio!\n"
@ -314,18 +316,17 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
if (cp.not_empty()) if (cp.not_empty())
{ {
f.set(cp); f.set(cp);
if (m.insert_mode()) key = K_TAB;
app().set_scadenze(m);
} }
} }
return FALSE; ok = FALSE;
} }
} }
if (key == K_TAB && f.focusdirty() && m.insert_mode()) if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad)
app().set_scadenze(m); app().set_scadenze(m);
return TRUE; return ok;
} }
bool TPrimanota_application::annorif_handler(TMask_field& f, KEY key) bool TPrimanota_application::annorif_handler(TMask_field& f, KEY key)
@ -794,7 +795,7 @@ void TPrimanota_application::write_scadenze(const TMask& m)
// put data on partita // put data on partita
partita.put(PART_TIPOMOV, tmov); partita.put(PART_TIPOMOV, tmov);
partita.put(PART_NREG, nreg); partita.put(PART_NREG, nreg);
partita.put(PART_NUMRIG, 1); partita.put(PART_NUMRIG, riga_clifo+1);
partita.put(PART_DATAREG, m.get(F_DATAREG)); partita.put(PART_DATAREG, m.get(F_DATAREG));
partita.put(PART_DATADOC, m.get(F_DATADOC)); partita.put(PART_DATADOC, m.get(F_DATADOC));
partita.put(PART_NUMDOC, m.get(F_NUMDOC)); partita.put(PART_NUMDOC, m.get(F_NUMDOC));
@ -948,6 +949,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
const TRectype& old_pag = p.pagamento(nriga, nrata, nrigp); const TRectype& old_pag = p.pagamento(nriga, nrata, nrigp);
const TRiga_partite& somma = p.riga(nrigp); const TRiga_partite& somma = p.riga(nrigp);
const int riga_contabile = somma.get_int(PART_NUMRIG); // Riga movimento const int riga_contabile = somma.get_int(PART_NUMRIG); // Riga movimento
TSheet_field& sheet = cgs();
if (deleting >= 0) if (deleting >= 0)
{ {
@ -968,7 +970,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
{ {
const bool empty = sub_cgs_imp(old_riga, old_importo); const bool empty = sub_cgs_imp(old_riga, old_importo);
if (empty && (new_importo.is_zero() || new_conto != old_conto)) if (empty && (new_importo.is_zero() || new_conto != old_conto))
reset_cgs_row(old_riga); sheet.destroy(old_riga);
} }
// Importo della contropartita // Importo della contropartita
@ -1003,7 +1005,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
else else
{ {
const bool empty = add_cgs_imp(riga, grow_ritenute); const bool empty = add_cgs_imp(riga, grow_ritenute);
if (empty) reset_cgs_row(riga); if (empty) sheet.destroy(riga);
} }
} }
} // if (deleting != 0) } // if (deleting != 0)
@ -1025,7 +1027,7 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
CHECK(riga_abb >= 0, "Chiss'e' fregato gli abbuoni?"); CHECK(riga_abb >= 0, "Chiss'e' fregato gli abbuoni?");
const bool empty = add_cgs_imp(riga_abb, old_abbuono); const bool empty = add_cgs_imp(riga_abb, old_abbuono);
if (empty && new_ap != old_ap) if (empty && new_ap != old_ap)
cgs().destroy(riga_abb); sheet.destroy(riga_abb);
if (deleting != riga_contabile) if (deleting != riga_contabile)
{ {
@ -1075,7 +1077,8 @@ bool TPrimanota_application::notify_edit_pagamento(TPartita& p, TRectype& new_pa
else else
{ {
const bool empty = add_cgs_imp(riga_diffcam, grow_diffcam); const bool empty = add_cgs_imp(riga_diffcam, grow_diffcam);
if (empty) cgs().destroy(riga_diffcam); if (empty)
sheet.destroy(riga_diffcam);
} }
if (deleting != riga_contabile) if (deleting != riga_contabile)

View File

@ -7,6 +7,7 @@
#include "cg2102.h" // Applicazione di prima nota #include "cg2102.h" // Applicazione di prima nota
#endif #endif
#include <causali.h> // Archivio causali
#include <clifo.h> // Archivio clienti/fornitori #include <clifo.h> // Archivio clienti/fornitori
#include <mov.h> // Archivio movimenti di prima nota #include <mov.h> // Archivio movimenti di prima nota
#include <pagsca.h> // Archivio pagamenti #include <pagsca.h> // Archivio pagamenti
@ -22,6 +23,8 @@ class TPay_mask : public TMask
TDate _datadoc; TDate _datadoc;
real _da_pagare, _pagabile; real _da_pagare, _pagabile;
TDecoder _causale;
protected: protected:
static bool importo_handler(TMask_field& f, KEY k); static bool importo_handler(TMask_field& f, KEY k);
static bool importolire_handler(TMask_field& f, KEY k); static bool importolire_handler(TMask_field& f, KEY k);
@ -39,7 +42,8 @@ public:
virtual ~TPay_mask() {} virtual ~TPay_mask() {}
}; };
TPay_mask::TPay_mask() : TMask("cg2100s") TPay_mask::TPay_mask()
: TMask("cg2100s"), _causale(LF_CAUSALI, CAU_CODCAUS, CAU_DESCR)
{ {
} }
@ -66,7 +70,14 @@ void TPay_mask::set_pag(const TRectype& oldpag, const TRiga_scadenze& scad,
set(S_NUMDOC, fatt.get(PART_NUMDOC)); // Numero documento set(S_NUMDOC, fatt.get(PART_NUMDOC)); // Numero documento
set(S_DATADOC, fatt.get(PART_DATADOC)); // Data documento set(S_DATADOC, fatt.get(PART_DATADOC)); // Data documento
set(S_NUMPROT, fatt.get(PART_PROTIVA)); // Protocollo IVA set(S_NUMPROT, fatt.get(PART_PROTIVA)); // Protocollo IVA
set(S_DESCR, fatt.get(PART_DESCR)); // Descrizione fattura
TString desfat = fatt.get(PART_DESCR); // Descrizione fattura
if (desfat.empty()) // Se e' vuota ...
{
desfat = fatt.get(PART_CODCAUS);
desfat = _causale.decode(desfat); // ... usa descrizione causale
}
set(S_DESCR, desfat);
set(S_DATAPAG, sum.get(PART_DATAPAG)); // Data pagamento set(S_DATAPAG, sum.get(PART_DATAPAG)); // Data pagamento
set(S_TIPOPAG, sum.get(PART_TIPOPAG)); // Tipo pagamento set(S_TIPOPAG, sum.get(PART_TIPOPAG)); // Tipo pagamento
@ -537,8 +548,9 @@ real TGame_mask::aggiorna_residuo()
const TValuta cambio(*this, P_VALUTA, P_DATACAMBIO, P_CAMBIO); const TValuta cambio(*this, P_VALUTA, P_DATACAMBIO, P_CAMBIO);
if (cambio.in_valuta()) if (cambio.in_valuta())
{ {
const real resval = cambio.lit2val(res); TImporto resval = _importo; cambio.lit2val(resval);
set(P_RESIDUOVAL, resval); resval -= app().partite().importo_speso(_numreg, _numrig, TRUE); // Residuo della riga
set(P_RESIDUOVAL, resval.valore());
} }
} }
@ -951,7 +963,7 @@ int TGame_mask::nuovo_pagamento(TPartita& partita, int nriga, int rata) const
{ {
#ifdef __EXTRA__ #ifdef __EXTRA__
const int nrigp = nuova_riga(partita); const int nrigp = nuova_riga(partita);
if (nriga > 0) if (nriga > 0 && nriga != TPartita::UNASSIGNED)
{ {
const TRiga_partite& fattura = partita.riga(nriga); const TRiga_partite& fattura = partita.riga(nriga);
const TValuta val(fattura); const TValuta val(fattura);

View File

@ -37,7 +37,7 @@ BEGIN
PROMPT 1 4 "Conto principale" PROMPT 1 4 "Conto principale"
END END
NUMBER 101 15 NUMBER CG_DARE 15
BEGIN BEGIN
PROMPT 2 5 "Dare " PROMPT 2 5 "Dare "
HELP "Importo 'dare' del conto della riga" HELP "Importo 'dare' del conto della riga"
@ -45,7 +45,7 @@ BEGIN
PICTURE "." PICTURE "."
END END
NUMBER 102 15 NUMBER CG_AVERE 15
BEGIN BEGIN
PROMPT 43 5 "Avere " PROMPT 43 5 "Avere "
HELP "Importo 'avere' del conto della riga" HELP "Importo 'avere' del conto della riga"
@ -53,7 +53,7 @@ BEGIN
PICTURE "." PICTURE "."
END END
LIST 103 1 12 LIST CG_TIPO 1 12
BEGIN BEGIN
PROMPT 2 6 "Tipo " PROMPT 2 6 "Tipo "
HELP "Tipo del conto principale della riga" HELP "Tipo del conto principale della riga"
@ -63,13 +63,13 @@ BEGIN
ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206|SHOW,307|HIDE,107|HIDE,207 ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206|SHOW,307|HIDE,107|HIDE,207
END END
NUMBER 104 3 NUMBER CG_GRUPPO 3
BEGIN BEGIN
PROMPT 20 6 "Gruppo " PROMPT 20 6 "Gruppo "
HELP "Codice del conto delle riga" HELP "Codice del conto delle riga"
END END
NUMBER 105 3 NUMBER CG_CONTO 3
BEGIN BEGIN
PROMPT 32 6 "Conto " PROMPT 32 6 "Conto "
HELP "Codice del conto delle riga" HELP "Codice del conto delle riga"
@ -90,7 +90,7 @@ BEGIN
WARNING "Conto inesistente o mancante sulla riga contabile" WARNING "Conto inesistente o mancante sulla riga contabile"
END END
NUMBER 106 6 NUMBER CG_SOTTOCONTO 6
BEGIN BEGIN
PROMPT 45 6 "Sottoconto " PROMPT 45 6 "Sottoconto "
HELP "Codice del conto delle riga" HELP "Codice del conto delle riga"
@ -343,7 +343,7 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
LIST 116 20 LIST CG_ROWTYPE 20
BEGIN BEGIN
PROMPT 30 13 "Tipo riga " PROMPT 30 13 "Tipo riga "
ITEM " |Sola contabilita'" ITEM " |Sola contabilita'"

View File

@ -1674,7 +1674,7 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
for (int d = sf.items()-1; d >= i; d--) for (int d = sf.items()-1; d >= i; d--)
sf.destroy(d, FALSE); sf.destroy(d, FALSE);
// sf.enable_column(2, in_valuta); sf.enable_column(2, in_valuta);
} }
else else
{ {

View File

@ -230,11 +230,23 @@ void TValuta::val2lit(real& val) const
val.round(); val.round();
} }
void TValuta::lit2val(real& lit) const
{
lit /= _cam;
lit.round(3);
}
void TValuta::val2lit(TImporto& imp) const void TValuta::val2lit(TImporto& imp) const
{ {
val2lit(imp.valore()); val2lit(imp.valore());
} }
void TValuta::lit2val(TImporto& imp) const
{
lit2val(imp.valore());
}
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TDecoder // TDecoder
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////

View File

@ -85,7 +85,10 @@ public:
real lit2val(const real& lit) const; real lit2val(const real& lit) const;
real val2lit(const real& val) const; real val2lit(const real& val) const;
void val2lit(real& val) const; void val2lit(real& val) const;
void val2lit(TImporto& imp) const; void lit2val(real& lit) const;
void val2lit(TImporto& impval) const;
void lit2val(TImporto& implit) const;
bool in_lire() const { return _cod.empty(); } bool in_lire() const { return _cod.empty(); }
bool in_valuta() const { return _cod.not_empty(); } bool in_valuta() const { return _cod.not_empty(); }