Correzione errori prima nota

git-svn-id: svn://10.65.10.50/trunk@721 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-12-02 13:28:21 +00:00
parent 38adfe2902
commit 4265b6a9ac
11 changed files with 6058 additions and 6041 deletions

View File

@ -1,113 +1,113 @@
#include "cg2100.h" #include "cg2100.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 20 0 2
#include <toolbar.h> #include <toolbar.h>
ENDPAGE ENDPAGE
PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 8 PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 8
GROUPBOX DLG_NULL 78 3 GROUPBOX DLG_NULL 78 3
BEGIN BEGIN
PROMPT 1 0 "" PROMPT 1 0 ""
END END
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
BEGIN BEGIN
PROMPT 3 1 "Ditta " PROMPT 3 1 "Ditta "
FLAGS "FRD" FLAGS "FRD"
USE LF_NDITTE KEY 1 USE LF_NDITTE KEY 1
CHECKTYPE REQUIRED CHECKTYPE NORMAL
INPUT CODDITTA F_CODDITTA INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC OUTPUT F_RAGSOC RAGSOC
END END
STRING F_RAGSOC 50 STRING F_RAGSOC 50
BEGIN BEGIN
PROMPT 17 1 "Ragione " PROMPT 17 1 "Ragione "
FLAGS "D" FLAGS "D"
END END
NUMBER F_NUMREG 6 NUMBER F_NUMREG 6
BEGIN BEGIN
PROMPT 1 4 "Numero operazione " PROMPT 1 4 "Numero operazione "
HELP "Numero del movimento di prima nota da gestire" HELP "Numero del movimento di prima nota da gestire"
FLAGS "R" FLAGS "R"
FIELD LF_MOV->NUMREG FIELD LF_MOV->NUMREG
USE LF_MOV USE LF_MOV
INPUT NUMREG F_NUMREG INPUT NUMREG F_NUMREG
DISPLAY "Numero@6" NUMREG DISPLAY "Numero@6" NUMREG
DISPLAY "Data@10" DATAREG DISPLAY "Data@10" DATAREG
DISPLAY "Causale" CODCAUS DISPLAY "Causale" CODCAUS
DISPLAY "Documento" NUMDOC DISPLAY "Documento" NUMDOC
DISPLAY "Protoc." PROTIVA DISPLAY "Protoc." PROTIVA
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
OUTPUT F_NUMREG NUMREG OUTPUT F_NUMREG NUMREG
KEY 1 KEY 1
END END
DATE F_DATAREG DATE F_DATAREG
BEGIN BEGIN
PROMPT 1 6 "Data operazione " PROMPT 1 6 "Data operazione "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FLAGS "A" FLAGS "A"
HELP "Data in cui viene registrata l'operazione" HELP "Data in cui viene registrata l'operazione"
MESSAGE COPY,F_ANNOIVA,7,10 MESSAGE COPY,F_ANNOIVA,7,10
END END
NUMBER F_ANNOIVA 4 NUMBER F_ANNOIVA 4
BEGIN BEGIN
PROMPT 51 6 "Anno IVA " PROMPT 51 6 "Anno IVA "
FLAGS "D" FLAGS "D"
END END
DATE F_DATACOMP DATE F_DATACOMP
BEGIN BEGIN
PROMPT 1 7 "Data di competenza " PROMPT 1 7 "Data di competenza "
HELP "Data di competenza dell'operazione" HELP "Data di competenza dell'operazione"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FLAGS "A" FLAGS "A"
END END
NUMBER F_ANNOES 4 NUMBER F_ANNOES 4
BEGIN BEGIN
PROMPT 51 7 "Anno di esercizio " PROMPT 51 7 "Anno di esercizio "
FLAGS "DRZ" FLAGS "DRZ"
END END
STRING F_CODCAUS 3 STRING F_CODCAUS 3
BEGIN BEGIN
PROMPT 1 9 "Causale " PROMPT 1 9 "Causale "
HELP "Codice della causale dell'operazione" HELP "Codice della causale dell'operazione"
FLAGS "U" FLAGS "U"
FIELD LF_MOV->CODCAUS FIELD LF_MOV->CODCAUS
USE LF_CAUSALI KEY 1 USE LF_CAUSALI KEY 1
INPUT CODCAUS F_CODCAUS INPUT CODCAUS F_CODCAUS
DISPLAY "Codice" CODCAUS DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Tipo" TIPODOC DISPLAY "Tipo" TIPODOC
DISPLAY "Registro" REG DISPLAY "Registro" REG
OUTPUT F_CODCAUS CODCAUS OUTPUT F_CODCAUS CODCAUS
OUTPUT F_DESCRCAUS DESCR OUTPUT F_DESCRCAUS DESCR
ADD RUN cg0 -4 ADD RUN cg0 -4
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "Causale assente" WARNING "Causale assente"
END END
STRING F_DESCRCAUS 50 STRING F_DESCRCAUS 50
BEGIN BEGIN
PROMPT 21 9 "" PROMPT 21 9 ""
HELP "Descrizione della causale dell'operazione" HELP "Descrizione della causale dell'operazione"
USE LF_CAUSALI KEY 2 USE LF_CAUSALI KEY 2
CHECKTYPE NORMAL CHECKTYPE NORMAL
INPUT DESCR F_DESCRCAUS INPUT DESCR F_DESCRCAUS
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS DISPLAY "Codice" CODCAUS
DISPLAY "Tipo" TIPODOC DISPLAY "Tipo" TIPODOC
DISPLAY "Registro" REG DISPLAY "Registro" REG
COPY OUTPUT F_CODCAUS COPY OUTPUT F_CODCAUS
ADD RUN cg0 -4 ADD RUN cg0 -4
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

File diff suppressed because it is too large Load Diff

View File

@ -528,7 +528,7 @@ void TPrimanota_application::generazione_righe_cg(int r)
conto.add_to(cg.row(1), 9, 0x3); conto.add_to(cg.row(1), 9, 0x3);
cg.force_update(1); cg.force_update(1);
} }
} }
if (causale().codice()[0] > ' ') if (causale().codice()[0] > ' ')
{ {
@ -545,7 +545,8 @@ void TPrimanota_application::generazione_righe_cg(int r)
TBill conto(row, 2, 0x3); TBill conto(row, 2, 0x3);
if (first_not_empty == r) if (first_not_empty == r)
{ {
int last = r;
for (i = r+1; i < cg.items(); i++) for (i = r+1; i < cg.items(); i++)
{ {
TToken_string& rowi = cg.row(i); TToken_string& rowi = cg.row(i);
@ -561,11 +562,16 @@ void TPrimanota_application::generazione_righe_cg(int r)
{ {
conto.add_to(rowi, 9, 0x3); conto.add_to(rowi, 9, 0x3);
cg.force_update(i); cg.force_update(i);
if (last == r) last = i;
else last = 0;
} }
} }
} }
else }
break; if (last > r)
{
importo.swap_section();
set_cgs_imp(last, importo);
} }
} }
else else
@ -587,30 +593,30 @@ bool TPrimanota_application::cg_notify(int r, KEY k)
switch(k) switch(k)
{ {
case K_SPACE: case K_SPACE:
{ {
TSheet_field& cg = app().cgs(); TSheet_field& cg = app().cgs();
TToken_string& row = cg.row(r); TToken_string& row = cg.row(r);
const char tipo = row.right(1)[0]; const char tipo = row.right(1)[0];
cg.sheet_mask().enable(DLG_DELREC, tipo <= ' '); cg.sheet_mask().enable(DLG_DELREC, tipo <= ' ');
}
break;
case K_ENTER:
if (app().iva() == nessuna_iva)
app().generazione_righe_cg(r);
app().calcola_saldo();
break;
case K_DEL:
{
TToken_string& row = app().cgs().row(r);
const char tipo = row.right(1)[0];
if (tipo > ' ')
return error_box("La riga %d non puo' essere cancellata", r+1);
}
break;
default:
break;
} }
return TRUE; break;
case K_ENTER:
if (app().iva() == nessuna_iva)
app().generazione_righe_cg(r);
app().calcola_saldo();
break;
case K_DEL:
{
TToken_string& row = app().cgs().row(r);
const char tipo = row.right(1)[0];
if (tipo > ' ')
return error_box("La riga %d non puo' essere cancellata", r+1);
}
break;
default:
break;
}
return TRUE;
} }
bool TPrimanota_application::descr_handler(TMask_field& f, KEY k) bool TPrimanota_application::descr_handler(TMask_field& f, KEY k)
@ -701,15 +707,15 @@ bool TPrimanota_application::codiva_handler(TMask_field& f, KEY key)
if (key == K_TAB && f.dirty()) if (key == K_TAB && f.dirty())
{ {
TMask& m = f.mask(); TMask& m = f.mask();
if (m.get_int(107) == 0) if (m.get_int(107) == 0)
{ {
TCodiceIVA iva(f.get()); TCodiceIVA iva(f.get());
TBill b; app().IVA2bill(iva, b); TBill b; app().IVA2bill(iva, b);
char cr[2] = { b.tipo_cr() + '0', '\0' }; char cr[2] = { b.tipo_cr() + '0', '\0' };
m.set(105, *cr > '0' ? cr : ""); m.set(105, *cr > '0' ? cr : "");
const char tipo[2] = { b.tipo(), '\0' }; const char tipo[2] = { b.tipo(), '\0' };
m.set(106, tipo); m.set(106, tipo);
m.set(107, b.gruppo()); m.set(107, b.gruppo());
@ -840,12 +846,17 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
} }
TBill oldconto(row, 6, 0x0); // g/c/s 6 7 8 TBill oldconto(row, 6, 0x0); // g/c/s 6 7 8
oldpos = bill2pos(oldconto, 'I'); if (oldconto.ok())
if (oldpos < 0 && oldconto.ok()) {
{ oldpos = bill2pos(oldconto, 'I');
const TString80 d(cau.desc_agg(2)); if (oldpos < 0)
oldpos = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), oldconto, d, 'I'); {
} const TString80 d(cau.desc_agg(2));
oldpos = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), oldconto, d, 'I');
}
}
else
oldpos = -1; // Se il conto e' incompleto ignoralo
} }
if (k == K_DEL) // Cancellazione di una riga if (k == K_DEL) // Cancellazione di una riga
{ {
@ -928,26 +939,26 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
newposiva = app().set_cgs_row(-1, val, contoiva, d, tipod); newposiva = app().set_cgs_row(-1, val, contoiva, d, tipod);
} }
} }
else else
{ {
TImporto val(app().real2imp(imposta, 'I')); TImporto val(app().real2imp(imposta, 'I'));
val = app().add_cgs_imp(newposiva, val); val = app().add_cgs_imp(newposiva, val);
if (val.is_zero()) // Se la riga si e' azzerata ... if (val.is_zero()) // Se la riga si e' azzerata ...
{ {
app().reset_cgs_row(newposiva); // ... cancellala app().reset_cgs_row(newposiva); // ... cancellala
newposiva = -1; newposiva = -1;
} }
} }
oldiva = imposta; oldiva = imposta;
oldposiva = newposiva; oldposiva = newposiva;
if (r == 0) // Se cambio la prima riga ... if (r == 0) // Se cambio la prima riga ...
app().add_cgs_tot(app().curr_mask()); // ... ricalcola conti app().add_cgs_tot(app().curr_mask()); // ... ricalcola conti
app().calcola_imp(); // Ricalcola totale IVA app().calcola_imp(); // Ricalcola totale IVA
app().calcola_saldo(); // Ricalcola sbilanci app().calcola_saldo(); // Ricalcola sbilanci
} }
return TRUE; return TRUE;
} }
@ -1061,7 +1072,7 @@ bool TPrimanota_application::num_handler(TMask_field& f, KEY key)
{ {
TMask& m = f.mask(); TMask& m = f.mask();
if (!m.is_running()) return TRUE; if (!m.is_running()) return TRUE;
const long num = atol(f.get()); const long num = atol(f.get());
if (key == K_TAB && num > 0) if (key == K_TAB && num > 0)
{ {
@ -1069,7 +1080,13 @@ bool TPrimanota_application::num_handler(TMask_field& f, KEY key)
if (num < max) if (num < max)
{ {
if (app().find(1)) if (app().find(1))
{
const TLocalisamfile& mov = app()._rel->lfile();
m.set(F_DATAREG, mov.get("DATAREG"));
m.set(F_DATACOMP, mov.get("DATACOMP"));
m.set(F_CODCAUS, mov.get("CODCAUS"));
m.stop_run(K_AUTO_ENTER); m.stop_run(K_AUTO_ENTER);
}
} }
else if (num > max) else if (num > max)
{ {
@ -1138,7 +1155,7 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
{ {
bool ok = TRUE; bool ok = TRUE;
if ((key == K_TAB && f.focusdirty()) || key == K_ENTER) if ((key == K_TAB || key == K_ENTER) && f.dirty())
{ {
const TDate dr(f.get()); // Data dell'operazione const TDate dr(f.get()); // Data dell'operazione
if (dr > TDate(TODAY)) if (dr > TDate(TODAY))
@ -1158,35 +1175,26 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
if (!ok) if (!ok)
return f.error_box("Non esiste il libro giornale dell'esercizio %d", ae); return f.error_box("Non esiste il libro giornale dell'esercizio %d", ae);
if (f.dirty() || m.query_mode()) if (key == K_ENTER || f.focusdirty())
{ {
const long numreg = m.get_long(F_NUMREG); const long numreg = m.get_long(F_NUMREG);
const bool error = numreg == 0 || numreg > app()._lastreg; const bool error = numreg == 0 || numreg > app()._lastreg;
const TLibro_giornale& gio = app().giornale(); const TLibro_giornale& gio = app().giornale();
if (dr < gio.last_print()) if (dr < gio.last_print())
{ {
f.error_box("La data dell'operazione e' antecedente al %s,\n" f.error_box("La data dell'operazione e' antecedente al %s,\n"
"ultima stampa del libro giornale dell'esercizio %d", "ultima stampa del libro giornale dell'esercizio %d",
gio.last_reg().string(), ae); gio.last_print().string(), ae);
if (error) return FALSE; if (error) return FALSE;
} }
if (dr < gio.last_reg()) if (dr < gio.last_reg())
f.warning_box("La data dell'operazione e' antecedente al %s,\n" f.warning_box("La data dell'operazione e' antecedente al %s,\n"
"ultima registrazione sul libro giornale dell'esercizio %d", "ultima registrazione sul libro giornale dell'esercizio %d",
gio.last_reg().string(), ae); gio.last_reg().string(), ae);
if (m.query_mode()) if (m.query_mode())
{ app().causale().read(m.get(F_CODCAUS), dr.year());
const long numreg = m.get_long(F_NUMREG);
if (numreg > 0 && numreg <= app()._lastreg)
{
TLocalisamfile& mov = app().get_relation()->lfile();
mov.put(MOV_NUMREG, numreg);
if (mov.read() == NOERR)
m.set(F_CODCAUS, mov.get(MOV_CODCAUS));
}
}
TRegistro& reg = app().causale().reg(); TRegistro& reg = app().causale().reg();
const TString16 codreg(reg.name()); const TString16 codreg(reg.name());
@ -1408,7 +1416,7 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
if (clifo.get_bool(CLI_OCCAS)) if (clifo.get_bool(CLI_OCCAS))
m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali
if (m.field(F_VISVAL).active()) if (m.field(F_VISVAL).active())
{ {
const TString16 valuta(clifo.get("CODVAL")); const TString16 valuta(clifo.get("CODVAL"));
@ -1644,12 +1652,12 @@ bool TPrimanota_application::corrvaluta_handler(TMask_field& f, KEY key)
} }
} }
} else } else
if (key == K_ENTER && f.get().empty()) if (key == K_ENTER && f.get().empty())
{ {
TMask_field& cl = f.mask().field(F_CORRLIRE); TMask_field& cl = f.mask().field(F_CORRLIRE);
cl.set_dirty(); cl.set_dirty();
cl.on_hit(); cl.on_hit();
} }
return TRUE; return TRUE;
} }

View File

@ -58,7 +58,6 @@ bool TRegistro::read(const char* cod, int year)
_att.zero(); _att.zero();
if (err != NOERR) if (err != NOERR)
_rec.zero(); _rec.zero();
_prorata = -1.0;
return err == NOERR; return err == NOERR;
} }
@ -151,7 +150,21 @@ bool TRegistro::read_att()
_att = attiv.curr(); _att = attiv.curr();
if (err != NOERR) if (err != NOERR)
_att.zero(); _att.zero();
TString16 chiave; // Anno - Attivita' - Tipo Attivita' (fissata a 1)
chiave << year(); // non fare << year() << attivita()
chiave << attivita() << "1";
TTable pla("PLA");
pla.put("CODTAB", chiave);
if (pla.read() == NOERR)
{
_prorata = pla.get_real("R8");
_att.put("TIPOATT", pla.get("S7")); // Aggiorna tipo attivita'
}
else
_prorata = 0.0;
return err == NOERR; return err == NOERR;
} }
@ -169,22 +182,10 @@ const TString& TRegistro::tipo_attivita()
return _att.get("TIPOATT"); return _att.get("TIPOATT");
} }
const real& TRegistro::prorata() const real& TRegistro::prorata()
{ {
if (_prorata.sign() < 0) read_att();
{
TString16 chiave; // Anno - Attivita' - Tipo Attivita' (fissata a 1)
chiave << year();
chiave << attivita() << "1";
TTable pla("PLA");
pla.put("CODTAB", chiave);
if (pla.read() == NOERR)
_prorata = pla.get_real("R8");
else
_prorata = 0.0;
}
return _prorata; return _prorata;
} }

View File

@ -1,371 +1,371 @@
PAGE "RIGA PRIMA NOTA" -1 -1 67 16 PAGE "RIGA PRIMA NOTA" -1 -1 67 16
GROUPBOX DLG_NULL 66 3 GROUPBOX DLG_NULL 66 3
BEGIN BEGIN
PROMPT 1 1 "Descrizione" PROMPT 1 1 "Descrizione"
END END
STRING 108 5 STRING 108 5
BEGIN BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
HELP "Codice della descrizione aggiuntiva di riga" HELP "Codice della descrizione aggiuntiva della riga"
FLAGS "U" FLAGS "U"
USE %DPN USE %DPN
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT 108 CODTAB OUTPUT 108 CODTAB
OUTPUT 109 S0 OUTPUT 109 S0
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING 109 50 STRING 109 50
BEGIN BEGIN
PROMPT 14 2 "" PROMPT 14 2 ""
USE %DPN USE %DPN KEY 2
INPUT S0 109 INPUT S0 109
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
COPY OUTPUT 108 COPY OUTPUT 108
HELP "Descrizione aggiuntiva di riga" HELP "Descrizione aggiuntiva della riga"
FIELD DESCR FIELD DESCR
END END
GROUPBOX DLG_NULL 66 5 GROUPBOX DLG_NULL 66 5
BEGIN BEGIN
PROMPT 1 4 "Conto principale" PROMPT 1 4 "Conto principale"
END END
NUMBER 101 15 NUMBER 101 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"
FLAGS "RV" FLAGS "RV"
PICTURE "." PICTURE "."
END END
NUMBER 102 15 NUMBER 102 15
BEGIN BEGIN
PROMPT 42 5 "Avere " PROMPT 42 5 "Avere "
HELP "Importo avere del conto della riga" HELP "Importo 'avere' del conto della riga"
FLAGS "RV" FLAGS "RV"
PICTURE "." PICTURE "."
END END
LIST 103 1 12 LIST 103 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"
FLAGS "U" FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306|SHOW,107|HIDE,207|HIDE,307 ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306|SHOW,107|HIDE,207|HIDE,307
ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306|SHOW,207|HIDE,107|HIDE,307 ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306|SHOW,207|HIDE,107|HIDE,307
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 104 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 105 3
BEGIN BEGIN
PROMPT 32 6 "Conto " PROMPT 32 6 "Conto "
HELP "Codice del conto delle riga" HELP "Codice del conto delle riga"
FIELD LF_PCON->CONTO FIELD LF_PCON->CONTO
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="") USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
INPUT GRUPPO 104 INPUT GRUPPO 104
INPUT CONTO 105 INPUT CONTO 105
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Tipo" TMCF DISPLAY "Tipo" TMCF
OUTPUT 103 TMCF OUTPUT 103 TMCF
OUTPUT 104 GRUPPO OUTPUT 104 GRUPPO
OUTPUT 105 CONTO OUTPUT 105 CONTO
OUTPUT 107 DESCR OUTPUT 107 DESCR
CHECKTYPE NORMAL CHECKTYPE NORMAL
MESSAGE DIRTY,106|DIRTY,206|DIRTY,306 MESSAGE DIRTY,106|DIRTY,206|DIRTY,306
WARNING "Conto inesistente o mancante sulla riga contabile" WARNING "Conto inesistente o mancante sulla riga contabile"
END END
NUMBER 106 6 NUMBER 106 6
BEGIN BEGIN
PROMPT 45 6 "Sottoconto " PROMPT 45 6 "Sottoconto "
HELP "Codice del conto delle riga" HELP "Codice del conto delle riga"
FIELD LF_PCON->SOTTOCONTO FIELD LF_PCON->SOTTOCONTO
USE LF_PCON SELECT SOTTOCONTO!="" USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO 104 INPUT GRUPPO 104
INPUT CONTO 105 INPUT CONTO 105
INPUT SOTTOCONTO 106 INPUT SOTTOCONTO 106
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
OUTPUT 106 SOTTOCONTO OUTPUT 106 SOTTOCONTO
OUTPUT 104 GRUPPO OUTPUT 104 GRUPPO
OUTPUT 105 CONTO OUTPUT 105 CONTO
OUTPUT 107 DESCR OUTPUT 107 DESCR
ADD RUN cg0 -0 ADD RUN cg0 -0
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Sottoconto inesistente sulla riga contabile" WARNING "Sottoconto inesistente sulla riga contabile"
END END
NUMBER 206 6 NUMBER 206 6
BEGIN BEGIN
PROMPT 45 6 "Cliente " PROMPT 45 6 "Cliente "
HELP "Codice del cliente delle riga" HELP "Codice del cliente delle riga"
FIELD LF_PCON->SOTTOCONTO FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT CODCF 206 INPUT CODCF 206
DISPLAY "Codice" CODCF DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale Cliente@50" RAGSOC DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
OUTPUT 206 CODCF OUTPUT 206 CODCF
OUTPUT 207 RAGSOC OUTPUT 207 RAGSOC
MESSAGE COPY,106 MESSAGE COPY,106
ADD RUN cg0 -1 ADD RUN cg0 -1
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile" WARNING "Cliente inesistente sulla riga contabile"
END END
NUMBER 306 6 NUMBER 306 6
BEGIN BEGIN
PROMPT 45 6 "Fornitore " PROMPT 45 6 "Fornitore "
HELP "Codice del fornitore delle riga" HELP "Codice del fornitore delle riga"
FIELD LF_PCON->SOTTOCONTO FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "F" INPUT TIPOCF "F"
INPUT CODCF 306 INPUT CODCF 306
DISPLAY "Codice" CODCF DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
OUTPUT 306 CODCF OUTPUT 306 CODCF
OUTPUT 307 RAGSOC OUTPUT 307 RAGSOC
MESSAGE COPY,106 MESSAGE COPY,106
ADD RUN cg0 -1 ADD RUN cg0 -1
MESSAGE COPY,106 MESSAGE COPY,106
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile" WARNING "Fornitore inesistente sulla riga contabile"
END END
STRING 107 50 STRING 107 50
BEGIN BEGIN
PROMPT 2 7 "Descriz. " PROMPT 2 7 "Descriz. "
HELP "Descrizione del conto delle riga" HELP "Descrizione del conto delle riga"
FIELD LF_PCON->DESCR FIELD LF_PCON->DESCR
USE LF_PCON KEY 2 USE LF_PCON KEY 2
INPUT DESCR 107 INPUT DESCR 107
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT 106 COPY OUTPUT 106
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Sottoconto inesistente o mancante sulla riga contabile" WARNING "Sottoconto inesistente o mancante sulla riga contabile"
ADD RUN cg0 -0 ADD RUN cg0 -0
END END
STRING 207 50 STRING 207 50
BEGIN BEGIN
PROMPT 2 7 "Cliente " PROMPT 2 7 "Cliente "
HELP "Ragione sociale del cliente delle riga" HELP "Ragione sociale del cliente delle riga"
FIELD LF_CLIFO->RAGSOC FIELD LF_CLIFO->RAGSOC
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT RAGSOC 207 INPUT RAGSOC 207
DISPLAY "Ragione Sociale Cliente@50" RAGSOC DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF DISPLAY "Codice" CODCF
COPY OUTPUT 206 COPY OUTPUT 206
MESSAGE COPY,107 MESSAGE COPY,107
ADD RUN cg0 -1 ADD RUN cg0 -1
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile" WARNING "Cliente inesistente sulla riga contabile"
END END
STRING 307 50 STRING 307 50
BEGIN BEGIN
PROMPT 2 7 "Fornitore " PROMPT 2 7 "Fornitore "
HELP "Ragione sociale del fonitore delle riga" HELP "Ragione sociale del fonitore delle riga"
FIELD LF_PCON->SOTTOCONTO FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "F" INPUT TIPOCF "F"
INPUT RAGSOC 307 INPUT RAGSOC 307
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF DISPLAY "Codice" CODCF
COPY OUTPUT 306 COPY OUTPUT 306
MESSAGE COPY,107 MESSAGE COPY,107
ADD RUN cg0 -1 ADD RUN cg0 -1
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile" WARNING "Fornitore inesistente sulla riga contabile"
END END
GROUPBOX DLG_NULL 66 4 GROUPBOX DLG_NULL 66 4
BEGIN BEGIN
PROMPT 1 9 "Contropartita" PROMPT 1 9 "Contropartita"
END END
LIST 110 1 12 LIST 110 1 12
BEGIN BEGIN
PROMPT 2 10 "Tipo " PROMPT 2 10 "Tipo "
HELP "Tipo del conto di contropartita della riga" HELP "Tipo del conto di contropartita della riga"
FLAGS "U" FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313|SHOW,114|HIDE,214|HIDE,314 ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313|SHOW,114|HIDE,214|HIDE,314
ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313|SHOW,214|HIDE,114|HIDE,314 ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313|SHOW,214|HIDE,114|HIDE,314
ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213|SHOW,314|HIDE,114|HIDE,214 ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213|SHOW,314|HIDE,114|HIDE,214
END END
NUMBER 111 3 NUMBER 111 3
BEGIN BEGIN
PROMPT 20 10 "Gruppo " PROMPT 20 10 "Gruppo "
HELP "Codice del conto di contropartita delle riga" HELP "Codice del conto di contropartita delle riga"
END END
NUMBER 112 3 NUMBER 112 3
BEGIN BEGIN
PROMPT 32 10 "Conto " PROMPT 32 10 "Conto "
HELP "Codice del conto di contropartita delle riga" HELP "Codice del conto di contropartita delle riga"
FIELD LF_PCON->CONTO FIELD LF_PCON->CONTO
COPY USE 105 COPY USE 105
INPUT GRUPPO 111 INPUT GRUPPO 111
INPUT CONTO 112 INPUT CONTO 112
COPY DISPLAY 105 COPY DISPLAY 105
OUTPUT 110 TMCF OUTPUT 110 TMCF
OUTPUT 111 GRUPPO OUTPUT 111 GRUPPO
OUTPUT 112 CONTO OUTPUT 112 CONTO
OUTPUT 114 DESCR OUTPUT 114 DESCR
ADD RUN CG0 -0 ADD RUN CG0 -0
MESSAGE DIRTY,113|DIRTY,213|DIRTY,313 MESSAGE DIRTY,113|DIRTY,213|DIRTY,313
CHECKTYPE NORMAL CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 3 113 213 313 VALIDATE REQIF_FUNC 3 113 213 313
END END
NUMBER 113 6 NUMBER 113 6
BEGIN BEGIN
PROMPT 45 10 "Sottoconto " PROMPT 45 10 "Sottoconto "
HELP "Codice del conto di contropartita delle riga" HELP "Codice del conto di contropartita delle riga"
FIELD LF_PCON->SOTTOCONTO FIELD LF_PCON->SOTTOCONTO
COPY USE 106 COPY USE 106
COPY INPUT 112 COPY INPUT 112
INPUT SOTTOCONTO 113 INPUT SOTTOCONTO 113
COPY DISPLAY 106 COPY DISPLAY 106
OUTPUT 113 SOTTOCONTO OUTPUT 113 SOTTOCONTO
OUTPUT 111 GRUPPO OUTPUT 111 GRUPPO
OUTPUT 112 CONTO OUTPUT 112 CONTO
OUTPUT 114 DESCR OUTPUT 114 DESCR
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
NUMBER 213 6 NUMBER 213 6
BEGIN BEGIN
PROMPT 45 10 "Cliente " PROMPT 45 10 "Cliente "
HELP "Codice del cliente di contropartita delle riga" HELP "Codice del cliente di contropartita delle riga"
FIELD LF_CLIFO->CODCF FIELD LF_CLIFO->CODCF
COPY USE 206 COPY USE 206
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT CODCF 213 INPUT CODCF 213
COPY DISPLAY 206 COPY DISPLAY 206
OUTPUT 213 CODCF OUTPUT 213 CODCF
OUTPUT 214 RAGSOC OUTPUT 214 RAGSOC
MESSAGE COPY,113 MESSAGE COPY,113
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
NUMBER 313 6 NUMBER 313 6
BEGIN BEGIN
PROMPT 45 10 "Fornitore " PROMPT 45 10 "Fornitore "
HELP "Codice del fornitore di contropartita delle riga" HELP "Codice del fornitore di contropartita delle riga"
FIELD LF_CLIFO->CODCF FIELD LF_CLIFO->CODCF
COPY USE 306 COPY USE 306
INPUT TIPOCF "F" INPUT TIPOCF "F"
INPUT CODCF 313 INPUT CODCF 313
COPY DISPLAY 306 COPY DISPLAY 306
OUTPUT 313 CODCF OUTPUT 313 CODCF
OUTPUT 314 RAGSOC OUTPUT 314 RAGSOC
MESSAGE COPY,113 MESSAGE COPY,113
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING 114 50 STRING 114 50
BEGIN BEGIN
PROMPT 2 11 "Descriz. " PROMPT 2 11 "Descriz. "
HELP "Descrizione del conto di contropartita delle riga" HELP "Descrizione del conto di contropartita delle riga"
FIELD LF_PCON->DESCR FIELD LF_PCON->DESCR
COPY USE 107 COPY USE 107
INPUT DESCR 114 INPUT DESCR 114
COPY DISPLAY 107 COPY DISPLAY 107
COPY OUTPUT 113 COPY OUTPUT 113
ADD RUN cg0 -0 ADD RUN cg0 -0
WARNING "Conto inesistente sulla riga contabile" WARNING "Conto inesistente sulla riga contabile"
END END
STRING 214 50 STRING 214 50
BEGIN BEGIN
PROMPT 2 11 "Cliente " PROMPT 2 11 "Cliente "
HELP "Ragione sociale del cliente di contropartita delle riga" HELP "Ragione sociale del cliente di contropartita delle riga"
FIELD LF_CLIFO->RAGSOC FIELD LF_CLIFO->RAGSOC
COPY USE 207 COPY USE 207
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT RAGSOC 214 INPUT RAGSOC 214
COPY DISPLAY 207 COPY DISPLAY 207
COPY OUTPUT 213 COPY OUTPUT 213
ADD RUN cg0 -1 ADD RUN cg0 -1
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile" WARNING "Cliente inesistente sulla riga contabile"
END END
STRING 314 50 STRING 314 50
BEGIN BEGIN
PROMPT 2 11 "Fornitore " PROMPT 2 11 "Fornitore "
HELP "Ragione sociale del fornitore di contropartita delle riga" HELP "Ragione sociale del fornitore di contropartita delle riga"
FIELD LF_CLIFO->RAGSOC FIELD LF_CLIFO->RAGSOC
COPY USE 307 COPY USE 307
INPUT TIPOCF "F" INPUT TIPOCF "F"
INPUT RAGSOC 314 INPUT RAGSOC 314
COPY DISPLAY 307 COPY DISPLAY 307
COPY OUTPUT 313 COPY OUTPUT 313
ADD RUN cg0 -1 ADD RUN cg0 -1
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile" WARNING "Fornitore inesistente sulla riga contabile"
END END
LIST 115 20 LIST 115 20
BEGIN BEGIN
PROMPT 2 13 "Tipo riga " PROMPT 2 13 "Tipo riga "
ITEM " |Sola contabilita'" ITEM " |Sola contabilita'"
ITEM "C|Gestione saldaconto" ITEM "C|Gestione saldaconto"
ITEM "D|IVA detraibile" ITEM "D|IVA detraibile"
ITEM "F|Ritenute fiscali" ITEM "F|Ritenute fiscali"
ITEM "I|Riga di IVA" ITEM "I|Riga di IVA"
ITEM "N|IVA non detraibile" ITEM "N|IVA non detraibile"
ITEM "S|Ritenute sociali" ITEM "S|Ritenute sociali"
ITEM "T|Totale documento" ITEM "T|Totale documento"
FLAGS "D" FLAGS "D"
END END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""
END END
BUTTON DLG_CANCEL 9 2 BUTTON DLG_CANCEL 9 2
BEGIN BEGIN
PROMPT -23 -1 "" PROMPT -23 -1 ""
END END
BUTTON DLG_DELREC 9 2 BUTTON DLG_DELREC 9 2
BEGIN BEGIN
PROMPT -33 -1 "Elimina" PROMPT -33 -1 "Elimina"
MESSAGE EXIT,K_DEL MESSAGE EXIT,K_DEL
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -1,143 +1,144 @@
#include <applicat.h> #include <applicat.h>
#include <mask.h> #include <mask.h>
#include <progind.h> #include <progind.h>
#include <urldefid.h> #include <urldefid.h>
#include "cg2200.h" #include "cg2200.h"
#include "cg2101.h" #include "cg2101.h"
#include <mov.h> #include <mov.h>
#include <rmov.h> #include <rmov.h>
#include <rmoviva.h> #include <rmoviva.h>
TString& add_plural(TString& s, long num, const char* name) TString& add_plural(TString& s, long num, const char* name)
{ {
const TFixed_string n(name); const TFixed_string n(name);
const char last = n[n.len()-1]; const char last = n[n.len()-1];
if (num < 1) if (num < 1)
{ {
s << "nessun"; s << "nessun";
if (toupper(last) == 'A' || toupper(n[0]) == 'Z' || if (toupper(last) == 'A' || toupper(n[0]) == 'Z' ||
toupper(n[0]) == 'S' && strchr("aeiouAEIOU", n[1]) == NULL) toupper(n[0]) == 'S' && strchr("aeiouAEIOU", n[1]) == NULL)
s << tolower(last); s << tolower(last);
s << ' ' << name; s << ' ' << name;
} }
else else
{ {
s << num << ' ' << name; s << num << ' ' << name;
if (num > 1) if (num > 1)
s[s.len()-1] = (last == 'a') ? 'e' : 'i'; s[s.len()-1] = (last == 'a') ? 'e' : 'i';
} }
return s; return s;
} }
class TDeleteprovv_app : public TApplication class TDeleteprovv_app : public TApplication
{ {
protected: protected:
virtual bool create(); virtual bool create();
virtual bool destroy(); virtual bool destroy();
virtual bool menu(MENU_TAG m); virtual bool menu(MENU_TAG m);
public: public:
TDeleteprovv_app() {}; TDeleteprovv_app() {};
}; };
bool TDeleteprovv_app::create() bool TDeleteprovv_app::create()
{ {
dispatch_e_menu(BAR_ITEM(1)); dispatch_e_menu(BAR_ITEM(1));
return TRUE; return TRUE;
} }
bool TDeleteprovv_app::destroy() bool TDeleteprovv_app::destroy()
{ {
return TRUE; return TRUE;
} }
bool TDeleteprovv_app::menu(MENU_TAG) bool TDeleteprovv_app::menu(MENU_TAG)
{ {
TMask m("cg2200a"); TMask m("cg2200a");
TCursor& cur = *m.efield(F_FROMDATE).browse()->cursor(); TCursor& cur = *m.efield(F_FROMDATE).browse()->cursor();
TLocalisamfile& mov = cur.file(LF_MOV); TLocalisamfile& mov = cur.file(LF_MOV);
TLocalisamfile rmov(LF_RMOV); TLocalisamfile rmov(LF_RMOV);
TLocalisamfile rmoviva(LF_RMOVIVA); TLocalisamfile rmoviva(LF_RMOVIVA);
while (m.run() != K_QUIT) while (m.run() != K_QUIT)
{ {
TRecnotype last = cur.items()-1; TRecnotype last = cur.items()-1;
mov.zero(); mov.zero();
const char* s = m.get(F_TODATE); const char* s = m.get(F_TODATE);
if (*s) if (*s)
{ {
mov.put(MOV_DATAREG, s); mov.put(MOV_DATAREG, s);
mov.put(MOV_NUMREG, m.get(F_TOREG)); mov.put(MOV_NUMREG, m.get(F_TOREG));
last = cur.read(); last = cur.read();
} }
mov.zero(); mov.zero();
mov.put(MOV_DATAREG, m.get(F_FROMDATE)); mov.put(MOV_DATAREG, m.get(F_FROMDATE));
mov.put(MOV_NUMREG, m.get(F_FROMREG)); mov.put(MOV_NUMREG, m.get(F_FROMREG));
const TRecnotype first = cur.read(); const TRecnotype first = cur.read();
const TRecnotype total = last-first+1; const TRecnotype total = last-first+1;
TString80 caption("Cancellazione di "); TString80 caption("Cancellazione di ");
add_plural(caption, total, "movimento"); add_plural(caption, total, "movimento");
if (!yesno_box(caption) || total < 1) if (!yesno_box(caption) || total < 1)
continue; continue;
TProgind pi(total, caption, FALSE, TRUE, 24); TProgind pi(total, caption, FALSE, TRUE, 24);
for (cur = first; cur.pos() <= last; ++cur) for (cur = first; cur.pos() <= last; ++cur)
{ {
const long numreg = mov.get_long(MOV_NUMREG); const long numreg = mov.get_long(MOV_NUMREG);
int err = cur.lock(); int err = cur.lock();
for (int rig = 1; err == NOERR; rig++) for (int rig = 1; err == NOERR; rig++)
{ {
rmov.put(RMV_NUMREG, numreg); rmov.put(RMV_NUMREG, numreg);
rmov.put(RMV_NUMRIG, rig); rmov.put(RMV_NUMRIG, rig);
if (rmov.read(_isequal, _lock) != NOERR) break; if (rmov.read(_isequal, _lock) != NOERR) break;
err = rmov.remove(); err = rmov.remove();
if (err != NOERR) if (err != NOERR)
caption.format("riga contabile %d", rig); caption.format("riga contabile %d", rig);
} }
for (rig = 1; err == NOERR; rig++) for (rig = 1; err == NOERR; rig++)
{ {
rmoviva.put(RMI_NUMREG, numreg); rmoviva.put(RMI_NUMREG, numreg);
rmoviva.put(RMI_NUMRIG, rig); rmoviva.put(RMI_NUMRIG, rig);
if (rmoviva.read(_isequal, _lock) != NOERR) break; if (rmoviva.read(_isequal, _lock) != NOERR) break;
err = rmov.remove(); err = rmov.remove();
if (err != NOERR) if (err != NOERR)
caption.format("riga IVA %d", rig); caption.format("riga IVA %d", rig);
} }
if (err == NOERR) if (err == NOERR)
{ {
err = mov.remove(); // Isam bug on remove with key != 1 mov.setkey(1); // Isam bug on remove with key != 1
} err = mov.remove();
else }
caption = "testata"; else
caption = "testata";
if (err == NOERR)
pi.addstatus(1); if (err == NOERR)
else pi.addstatus(1);
{ else
error_box("Errore %d nella cancellazione della %s del movimento %ld", {
err, (const char*)caption, numreg); error_box("Errore %d nella cancellazione della %s del movimento %ld",
break; err, (const char*)caption, numreg);
} break;
} }
} }
}
return FALSE;
} return FALSE;
}
int cg2200(int argc, char** argv)
{ int cg2200(int argc, char** argv)
TDeleteprovv_app a; {
a.run(argc, argv, "Eliminazione movimenti provvisori"); TDeleteprovv_app a;
return 0; a.run(argc, argv, "Eliminazione movimenti provvisori");
return 0;
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,12 @@
// cg3400 - Stampa libro giornale // cg3400 - Stampa libro giornale
#include <isam.h> #include <config.h>
#include <mask.h> #include <mask.h>
#include <utility.h> #include <printapp.h>
#include <progind.h>
#include <tabutil.h> #include <tabutil.h>
#include <urldefid.h> #include <urldefid.h>
#include <printapp.h> #include <utility.h>
#include <config.h>
#include <progind.h>
#include <mov.h> #include <mov.h>
#include <rmov.h> #include <rmov.h>
@ -1081,8 +1080,8 @@ void CG3400_application::calcola_iva()
void CG3400_application::setta_righe_descr(TParagraph_string* str, enum descr des) void CG3400_application::setta_righe_descr(TParagraph_string* str, enum descr des)
{ {
int i = 1; int i = 1;
TString16 frm; const char* frm;
const char * r; const char* r;
switch (des) switch (des)
{ {
@ -1105,10 +1104,11 @@ void CG3400_application::setta_righe_descr(TParagraph_string* str, enum descr de
frm = "@69g%s"; frm = "@69g%s";
break; break;
default: default:
frm = "";
break; break;
} }
while ((r = str->get()) != NULL) while ((r = str->get()) != NULL)
set_row (i++, (const char*)frm, r); set_row (i++, frm, r);
} }
// NB // NB
@ -1121,23 +1121,28 @@ int CG3400_application::setta_righe_iva()
for (j = 0; j < _iva_array.items(); j++) for (j = 0; j < _iva_array.items(); j++)
{ {
TRigaiva& riga = (TRigaiva&)_iva_array[j]; TRigaiva& riga = _iva_array.riga(j);
r = j+1; r = j+1;
set_row(r, "Imponibile@12g%r", &riga._imponibile); set_row(r, "Imponibile@12g%r", &riga._imponibile);
set_row(r, "@31gImposta@39g%r", &riga._imposta); set_row(r, "@31gImposta@39g%r", &riga._imposta);
set_row(r, "@58gCodice Iva@68g%3s", (const char*)riga._codiva); set_row(r, "@58gCodice Iva@68g%3s", (const char*)riga._codiva);
switch (riga._tipodet) switch (riga._tipodet)
{ {
case 0 : set_row(r, "@73gDetraibile"); case 0:
break; set_row(r, "@73gDetraibile");
case 1 : set_row(r, "@73gIndetraibile su op.es."); break;
break; case 1:
case 3 : set_row(r, "@73gPassaggi interni"); set_row(r, "@73gIndetraibile su op.es.");
break; break;
case 9 : set_row(r, "@73gIndetraibile art.19"); case 3:
break; set_row(r, "@73gPassaggi interni");
default: break; break;
} case 9:
set_row(r, "@73gIndetraibile art.19");
break;
default:
break;
}
} }
_iva_array.destroy(); _iva_array.destroy();
set_row (j+1, ""); // lascio una riga vuota dopo tutto cio' set_row (j+1, ""); // lascio una riga vuota dopo tutto cio'

View File

@ -1,98 +1,95 @@
// TRigaiva_array // TRigaiva_array
// Tabella per il calcolo degli imponibili Iva // Tabella per il calcolo degli imponibili Iva
#include <array.h> #include "cglib03.h"
#include <real.h>
#include <strings.h> bool TRigaiva_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap)
#include "cglib03.h" {
bool found = FALSE;
bool TRigaiva_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap) for (int i = 0; i < items(); i++)
{ {
bool found = FALSE; TRigaiva& r = riga(i);
for (int i = 0; i < items(); i++) if (r._codiva==codiva && tipodet==r._tipodet && tipocr==r._tipocr)
{ {
TRigaiva& r = (TRigaiva&)(*this)[i]; found = TRUE;
if (r._codiva==codiva && tipodet==r._tipodet && tipocr==r._tipocr) r._imponibile += imponibile;
{ r._imposta += imposta;
found = TRUE; r._imponibilep += imponibilep;
r._imponibile += imponibile; r._impostap += impostap;
r._imposta += imposta; }
r._imponibilep += imponibilep; }
r._impostap += impostap; if (!found)
} {
} TRigaiva* r = new TRigaiva(imponibile,imposta,codiva,tipodet,tipocr,imponibilep,impostap);
if (!found) add(r);
{ }
TRigaiva* r = new TRigaiva(imponibile,imposta,codiva,tipodet,tipocr,imponibilep,impostap); return found;
add(r); }
}
return found; bool TRiga_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap)
} {
bool found = FALSE;
bool TRiga_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap) for (int i = 0; i < items(); i++)
{ {
bool found = FALSE; TRiga& r = riga(i);
for (int i = 0; i < items(); i++) if (r._codiva==codiva && r._tipodoc==tipodoc)
{ {
TRiga& r = (TRiga&)(*this)[i]; found = TRUE;
if (r._codiva==codiva && r._tipodoc==tipodoc) r._imponibile += imponibile;
{ r._imposta += imposta;
found = TRUE; r._imponibilep += imponibilep;
r._imponibile += imponibile; r._impostap += impostap;
r._imposta += imposta; }
r._imponibilep += imponibilep; }
r._impostap += impostap; if (!found)
} {
} TRiga* r = new TRiga(imponibile,imposta,codiva,tipodoc,imponibilep,impostap);
if (!found) add(r);
{ }
TRiga* r = new TRiga(imponibile,imposta,codiva,tipodoc,imponibilep,impostap); return found;
add(r); }
}
return found; bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc)
} {
bool found = FALSE;
bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc) for (int i = 0; i < items(); i++)
{ {
bool found = FALSE; TDociva& r = riga(i);
for (int i = 0; i < items(); i++) if (r._descrdoc==_descrdociva)
{ {
TDociva& r = (TDociva&)(*this)[i]; found = TRUE;
if (r._descrdoc==_descrdociva) if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 9))//||(r._ndoc == 4))
{ r._totdociva += _importo;
found = TRUE; }
if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 9))//||(r._ndoc == 4)) }
r._totdociva += _importo; if (!found)
} {
} if ((_natdoc == 1)||(_natdoc == 2)||(_natdoc == 9))//||(_natdoc == 4))
if (!found) {
{ TDociva* r = new TDociva(_descrdociva,_importo,_natdoc);
if ((_natdoc == 1)||(_natdoc == 2)||(_natdoc == 9))//||(_natdoc == 4)) add(r);
{ }
TDociva* r = new TDociva(_descrdociva,_importo,_natdoc); }
add(r); return found;
} }
}
return found; bool TTipodoc_array::add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc)
} {
bool found = FALSE;
bool TTipodoc_array::add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc) for (int i = 0; i < items(); i++)
{ {
bool found = FALSE; TTipodoc& r = (TTipodoc&)(*this)[i];
for (int i = 0; i < items(); i++) if (r._tipodoc==tipodoc)
{ {
TTipodoc& r = (TTipodoc&)(*this)[i]; found = TRUE;
if (r._tipodoc==tipodoc) r._totdoc += totdoc;
{ }
found = TRUE; }
r._totdoc += totdoc; if (!found)
} {
} TTipodoc* r = new TTipodoc(tipodoc,descrdoc,totdoc);
if (!found) add(r);
{ }
TTipodoc* r = new TTipodoc(tipodoc,descrdoc,totdoc); return found;
add(r); }
}
return found;
}

View File

@ -1,75 +1,83 @@
// cglib03.h // cglib03.h
// TRigaiva_array // TRigaiva_array
// Tabella per il calcolo degli imponibili Iva // Tabella per il calcolo degli imponibili Iva
#ifndef __CGLIB03_H #ifndef __CGLIB03_H
#define __CGLIB03_H #define __CGLIB03_H
#include <array.h> #ifndef __REAL_H
#include <real.h> #include <real.h>
#include <strings.h> #endif
struct TDociva : public TObject #ifndef __STRINGS_H
{ #include <strings.h>
TString _descrdoc; #endif
real _totdociva;
int _ndoc; struct TDociva : public TObject
{
TDociva(const char* _descrdociva, const real& _importo,const int _natdoc):_descrdoc(_descrdociva),_totdociva(_importo),_ndoc(_natdoc) TString _descrdoc;
{} real _totdociva;
}; int _ndoc;
class TDociva_array : public TArray TDociva(const char* _descrdociva, const real& _importo,const int _natdoc):_descrdoc(_descrdociva),_totdociva(_importo),_ndoc(_natdoc)
{ {}
public: };
bool add_riga(const char* _descrdociva,const real& _importo,const int _natdoc);
}; class TDociva_array : public TArray
{
struct TRigaiva : public TObject public:
{ bool add_riga(const char* _descrdociva,const real& _importo,const int _natdoc);
real _imponibile, _imposta, _imponibilep, _impostap; //imponibili, imposte del periodo e progressivi TDociva& riga(int i) { return (TDociva&)(*this)[i]; }
TString _codiva; };
int _tipodet, _tipocr;
struct TRigaiva : public TObject
TRigaiva (const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap): {
_imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodet(tipodet),_tipocr(tipocr),_imponibilep(imponibilep),_impostap(impostap) real _imponibile, _imposta, _imponibilep, _impostap; //imponibili, imposte del periodo e progressivi
{} TString _codiva;
}; int _tipodet, _tipocr;
class TRigaiva_array : public TArray TRigaiva (const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap):
{ _imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodet(tipodet),_tipocr(tipocr),_imponibilep(imponibilep),_impostap(impostap)
public: {}
bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap); };
};
class TRigaiva_array : public TArray
struct TTipodoc : public TObject {
{ public:
TString _tipodoc, _descrdoc; bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap);
real _totdoc; TRigaiva& riga(int i) { return (TRigaiva&)(*this)[i]; }
};
TTipodoc (const char* tipodoc, const char* descrdoc, const real& totdoc):
_tipodoc(tipodoc),_descrdoc(descrdoc),_totdoc(totdoc) {} struct TTipodoc : public TObject
}; {
TString _tipodoc, _descrdoc;
class TTipodoc_array : public TArray real _totdoc;
{
public: TTipodoc (const char* tipodoc, const char* descrdoc, const real& totdoc):
bool add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc); _tipodoc(tipodoc),_descrdoc(descrdoc),_totdoc(totdoc) {}
}; };
struct TRiga : public TObject class TTipodoc_array : public TArray
{ {
real _imponibile, _imposta, _imponibilep, _impostap; public:
TString _codiva, _tipodoc; bool add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc);
TTipodoc& riga(int i) { return (TTipodoc&)(*this)[i]; }
TRiga (const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap): };
_imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodoc(tipodoc),_imponibilep(imponibilep),_impostap(impostap) {}
}; struct TRiga : public TObject
{
class TRiga_array : public TArray real _imponibile, _imposta, _imponibilep, _impostap;
{ TString _codiva, _tipodoc;
public:
bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap); TRiga (const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap):
}; _imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodoc(tipodoc),_imponibilep(imponibilep),_impostap(impostap) {}
};
#endif
class TRiga_array : public TArray
{
public:
bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap);
TRiga& riga(int i) { return (TRiga&)(*this)[i]; }
};
#endif