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"
TOOLBAR "" 0 20 0 2
#include <toolbar.h>
ENDPAGE
PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 8
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 0 ""
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 1 "Ditta "
FLAGS "FRD"
USE LF_NDITTE KEY 1
CHECKTYPE REQUIRED
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
END
STRING F_RAGSOC 50
BEGIN
PROMPT 17 1 "Ragione "
FLAGS "D"
END
NUMBER F_NUMREG 6
BEGIN
PROMPT 1 4 "Numero operazione "
HELP "Numero del movimento di prima nota da gestire"
FLAGS "R"
FIELD LF_MOV->NUMREG
USE LF_MOV
INPUT NUMREG F_NUMREG
DISPLAY "Numero@6" NUMREG
DISPLAY "Data@10" DATAREG
DISPLAY "Causale" CODCAUS
DISPLAY "Documento" NUMDOC
DISPLAY "Protoc." PROTIVA
DISPLAY "Descrizione@50" DESCR
OUTPUT F_NUMREG NUMREG
KEY 1
END
DATE F_DATAREG
BEGIN
PROMPT 1 6 "Data operazione "
CHECKTYPE REQUIRED
FLAGS "A"
HELP "Data in cui viene registrata l'operazione"
MESSAGE COPY,F_ANNOIVA,7,10
END
NUMBER F_ANNOIVA 4
BEGIN
PROMPT 51 6 "Anno IVA "
FLAGS "D"
END
DATE F_DATACOMP
BEGIN
PROMPT 1 7 "Data di competenza "
HELP "Data di competenza dell'operazione"
CHECKTYPE REQUIRED
FLAGS "A"
END
NUMBER F_ANNOES 4
BEGIN
PROMPT 51 7 "Anno di esercizio "
FLAGS "DRZ"
END
STRING F_CODCAUS 3
BEGIN
PROMPT 1 9 "Causale "
HELP "Codice della causale dell'operazione"
FLAGS "U"
FIELD LF_MOV->CODCAUS
USE LF_CAUSALI KEY 1
INPUT CODCAUS F_CODCAUS
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Tipo" TIPODOC
DISPLAY "Registro" REG
OUTPUT F_CODCAUS CODCAUS
OUTPUT F_DESCRCAUS DESCR
ADD RUN cg0 -4
CHECKTYPE REQUIRED
WARNING "Causale assente"
END
STRING F_DESCRCAUS 50
BEGIN
PROMPT 21 9 ""
HELP "Descrizione della causale dell'operazione"
USE LF_CAUSALI KEY 2
CHECKTYPE NORMAL
INPUT DESCR F_DESCRCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
DISPLAY "Tipo" TIPODOC
DISPLAY "Registro" REG
COPY OUTPUT F_CODCAUS
ADD RUN cg0 -4
END
ENDPAGE
ENDMASK
#include "cg2100.h"
TOOLBAR "" 0 20 0 2
#include <toolbar.h>
ENDPAGE
PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 8
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 0 ""
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 1 "Ditta "
FLAGS "FRD"
USE LF_NDITTE KEY 1
CHECKTYPE NORMAL
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
END
STRING F_RAGSOC 50
BEGIN
PROMPT 17 1 "Ragione "
FLAGS "D"
END
NUMBER F_NUMREG 6
BEGIN
PROMPT 1 4 "Numero operazione "
HELP "Numero del movimento di prima nota da gestire"
FLAGS "R"
FIELD LF_MOV->NUMREG
USE LF_MOV
INPUT NUMREG F_NUMREG
DISPLAY "Numero@6" NUMREG
DISPLAY "Data@10" DATAREG
DISPLAY "Causale" CODCAUS
DISPLAY "Documento" NUMDOC
DISPLAY "Protoc." PROTIVA
DISPLAY "Descrizione@50" DESCR
OUTPUT F_NUMREG NUMREG
KEY 1
END
DATE F_DATAREG
BEGIN
PROMPT 1 6 "Data operazione "
CHECKTYPE REQUIRED
FLAGS "A"
HELP "Data in cui viene registrata l'operazione"
MESSAGE COPY,F_ANNOIVA,7,10
END
NUMBER F_ANNOIVA 4
BEGIN
PROMPT 51 6 "Anno IVA "
FLAGS "D"
END
DATE F_DATACOMP
BEGIN
PROMPT 1 7 "Data di competenza "
HELP "Data di competenza dell'operazione"
CHECKTYPE REQUIRED
FLAGS "A"
END
NUMBER F_ANNOES 4
BEGIN
PROMPT 51 7 "Anno di esercizio "
FLAGS "DRZ"
END
STRING F_CODCAUS 3
BEGIN
PROMPT 1 9 "Causale "
HELP "Codice della causale dell'operazione"
FLAGS "U"
FIELD LF_MOV->CODCAUS
USE LF_CAUSALI KEY 1
INPUT CODCAUS F_CODCAUS
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Tipo" TIPODOC
DISPLAY "Registro" REG
OUTPUT F_CODCAUS CODCAUS
OUTPUT F_DESCRCAUS DESCR
ADD RUN cg0 -4
CHECKTYPE REQUIRED
WARNING "Causale assente"
END
STRING F_DESCRCAUS 50
BEGIN
PROMPT 21 9 ""
HELP "Descrizione della causale dell'operazione"
USE LF_CAUSALI KEY 2
CHECKTYPE NORMAL
INPUT DESCR F_DESCRCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
DISPLAY "Tipo" TIPODOC
DISPLAY "Registro" REG
COPY OUTPUT F_CODCAUS
ADD RUN cg0 -4
END
ENDPAGE
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);
cg.force_update(1);
}
}
}
if (causale().codice()[0] > ' ')
{
@ -545,7 +545,8 @@ void TPrimanota_application::generazione_righe_cg(int r)
TBill conto(row, 2, 0x3);
if (first_not_empty == r)
{
{
int last = r;
for (i = r+1; i < cg.items(); 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);
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
@ -587,30 +593,30 @@ bool TPrimanota_application::cg_notify(int r, KEY k)
switch(k)
{
case K_SPACE:
{
TSheet_field& cg = app().cgs();
TToken_string& row = cg.row(r);
const char tipo = row.right(1)[0];
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;
{
TSheet_field& cg = app().cgs();
TToken_string& row = cg.row(r);
const char tipo = row.right(1)[0];
cg.sheet_mask().enable(DLG_DELREC, tipo <= ' ');
}
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)
@ -701,15 +707,15 @@ bool TPrimanota_application::codiva_handler(TMask_field& f, KEY key)
if (key == K_TAB && f.dirty())
{
TMask& m = f.mask();
if (m.get_int(107) == 0)
{
TCodiceIVA iva(f.get());
TBill b; app().IVA2bill(iva, b);
char cr[2] = { b.tipo_cr() + '0', '\0' };
m.set(105, *cr > '0' ? cr : "");
const char tipo[2] = { b.tipo(), '\0' };
m.set(106, tipo);
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
oldpos = bill2pos(oldconto, 'I');
if (oldpos < 0 && oldconto.ok())
{
const TString80 d(cau.desc_agg(2));
oldpos = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), oldconto, d, 'I');
}
if (oldconto.ok())
{
oldpos = bill2pos(oldconto, 'I');
if (oldpos < 0)
{
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
{
@ -928,26 +939,26 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
newposiva = app().set_cgs_row(-1, val, contoiva, d, tipod);
}
}
else
{
TImporto val(app().real2imp(imposta, 'I'));
val = app().add_cgs_imp(newposiva, val);
if (val.is_zero()) // Se la riga si e' azzerata ...
{
app().reset_cgs_row(newposiva); // ... cancellala
newposiva = -1;
}
}
else
{
TImporto val(app().real2imp(imposta, 'I'));
val = app().add_cgs_imp(newposiva, val);
if (val.is_zero()) // Se la riga si e' azzerata ...
{
app().reset_cgs_row(newposiva); // ... cancellala
newposiva = -1;
}
}
oldiva = imposta;
oldposiva = newposiva;
if (r == 0) // Se cambio la prima riga ...
app().add_cgs_tot(app().curr_mask()); // ... ricalcola conti
app().calcola_imp(); // Ricalcola totale IVA
app().calcola_saldo(); // Ricalcola sbilanci
}
return TRUE;
oldiva = imposta;
oldposiva = newposiva;
if (r == 0) // Se cambio la prima riga ...
app().add_cgs_tot(app().curr_mask()); // ... ricalcola conti
app().calcola_imp(); // Ricalcola totale IVA
app().calcola_saldo(); // Ricalcola sbilanci
}
return TRUE;
}
@ -1061,7 +1072,7 @@ bool TPrimanota_application::num_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask();
if (!m.is_running()) return TRUE;
const long num = atol(f.get());
if (key == K_TAB && num > 0)
{
@ -1069,7 +1080,13 @@ bool TPrimanota_application::num_handler(TMask_field& f, KEY key)
if (num < max)
{
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);
}
}
else if (num > max)
{
@ -1138,7 +1155,7 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
{
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
if (dr > TDate(TODAY))
@ -1158,35 +1175,26 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
if (!ok)
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 bool error = numreg == 0 || numreg > app()._lastreg;
const TLibro_giornale& gio = app().giornale();
if (dr < gio.last_print())
{
f.error_box("La data dell'operazione e' antecedente al %s,\n"
"ultima stampa del libro giornale dell'esercizio %d",
gio.last_reg().string(), ae);
gio.last_print().string(), ae);
if (error) return FALSE;
}
if (dr < gio.last_reg())
f.warning_box("La data dell'operazione e' antecedente al %s,\n"
"ultima registrazione sul libro giornale dell'esercizio %d",
gio.last_reg().string(), ae);
if (m.query_mode())
{
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));
}
}
if (m.query_mode())
app().causale().read(m.get(F_CODCAUS), dr.year());
TRegistro& reg = app().causale().reg();
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))
m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali
if (m.field(F_VISVAL).active())
{
const TString16 valuta(clifo.get("CODVAL"));
@ -1644,12 +1652,12 @@ bool TPrimanota_application::corrvaluta_handler(TMask_field& f, KEY key)
}
}
} else
if (key == K_ENTER && f.get().empty())
{
TMask_field& cl = f.mask().field(F_CORRLIRE);
cl.set_dirty();
cl.on_hit();
}
if (key == K_ENTER && f.get().empty())
{
TMask_field& cl = f.mask().field(F_CORRLIRE);
cl.set_dirty();
cl.on_hit();
}
return TRUE;
}

View File

@ -58,7 +58,6 @@ bool TRegistro::read(const char* cod, int year)
_att.zero();
if (err != NOERR)
_rec.zero();
_prorata = -1.0;
return err == NOERR;
}
@ -151,7 +150,21 @@ bool TRegistro::read_att()
_att = attiv.curr();
if (err != NOERR)
_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;
}
@ -169,22 +182,10 @@ const TString& TRegistro::tipo_attivita()
return _att.get("TIPOATT");
}
const real& TRegistro::prorata()
{
if (_prorata.sign() < 0)
{
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;
}
read_att();
return _prorata;
}

View File

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

View File

@ -1,143 +1,144 @@
#include <applicat.h>
#include <mask.h>
#include <progind.h>
#include <urldefid.h>
#include "cg2200.h"
#include "cg2101.h"
#include <mov.h>
#include <rmov.h>
#include <rmoviva.h>
TString& add_plural(TString& s, long num, const char* name)
{
const TFixed_string n(name);
const char last = n[n.len()-1];
if (num < 1)
{
s << "nessun";
if (toupper(last) == 'A' || toupper(n[0]) == 'Z' ||
toupper(n[0]) == 'S' && strchr("aeiouAEIOU", n[1]) == NULL)
s << tolower(last);
s << ' ' << name;
}
else
{
s << num << ' ' << name;
if (num > 1)
s[s.len()-1] = (last == 'a') ? 'e' : 'i';
}
return s;
}
class TDeleteprovv_app : public TApplication
{
protected:
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG m);
public:
TDeleteprovv_app() {};
};
bool TDeleteprovv_app::create()
{
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
}
bool TDeleteprovv_app::destroy()
{
return TRUE;
}
bool TDeleteprovv_app::menu(MENU_TAG)
{
TMask m("cg2200a");
TCursor& cur = *m.efield(F_FROMDATE).browse()->cursor();
TLocalisamfile& mov = cur.file(LF_MOV);
TLocalisamfile rmov(LF_RMOV);
TLocalisamfile rmoviva(LF_RMOVIVA);
while (m.run() != K_QUIT)
{
TRecnotype last = cur.items()-1;
mov.zero();
const char* s = m.get(F_TODATE);
if (*s)
{
mov.put(MOV_DATAREG, s);
mov.put(MOV_NUMREG, m.get(F_TOREG));
last = cur.read();
}
mov.zero();
mov.put(MOV_DATAREG, m.get(F_FROMDATE));
mov.put(MOV_NUMREG, m.get(F_FROMREG));
const TRecnotype first = cur.read();
const TRecnotype total = last-first+1;
TString80 caption("Cancellazione di ");
add_plural(caption, total, "movimento");
if (!yesno_box(caption) || total < 1)
continue;
TProgind pi(total, caption, FALSE, TRUE, 24);
for (cur = first; cur.pos() <= last; ++cur)
{
const long numreg = mov.get_long(MOV_NUMREG);
int err = cur.lock();
for (int rig = 1; err == NOERR; rig++)
{
rmov.put(RMV_NUMREG, numreg);
rmov.put(RMV_NUMRIG, rig);
if (rmov.read(_isequal, _lock) != NOERR) break;
err = rmov.remove();
if (err != NOERR)
caption.format("riga contabile %d", rig);
}
for (rig = 1; err == NOERR; rig++)
{
rmoviva.put(RMI_NUMREG, numreg);
rmoviva.put(RMI_NUMRIG, rig);
if (rmoviva.read(_isequal, _lock) != NOERR) break;
err = rmov.remove();
if (err != NOERR)
caption.format("riga IVA %d", rig);
}
if (err == NOERR)
{
err = mov.remove(); // Isam bug on remove with key != 1
}
else
caption = "testata";
if (err == NOERR)
pi.addstatus(1);
else
{
error_box("Errore %d nella cancellazione della %s del movimento %ld",
err, (const char*)caption, numreg);
break;
}
}
}
return FALSE;
}
int cg2200(int argc, char** argv)
{
TDeleteprovv_app a;
a.run(argc, argv, "Eliminazione movimenti provvisori");
return 0;
#include <applicat.h>
#include <mask.h>
#include <progind.h>
#include <urldefid.h>
#include "cg2200.h"
#include "cg2101.h"
#include <mov.h>
#include <rmov.h>
#include <rmoviva.h>
TString& add_plural(TString& s, long num, const char* name)
{
const TFixed_string n(name);
const char last = n[n.len()-1];
if (num < 1)
{
s << "nessun";
if (toupper(last) == 'A' || toupper(n[0]) == 'Z' ||
toupper(n[0]) == 'S' && strchr("aeiouAEIOU", n[1]) == NULL)
s << tolower(last);
s << ' ' << name;
}
else
{
s << num << ' ' << name;
if (num > 1)
s[s.len()-1] = (last == 'a') ? 'e' : 'i';
}
return s;
}
class TDeleteprovv_app : public TApplication
{
protected:
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG m);
public:
TDeleteprovv_app() {};
};
bool TDeleteprovv_app::create()
{
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
}
bool TDeleteprovv_app::destroy()
{
return TRUE;
}
bool TDeleteprovv_app::menu(MENU_TAG)
{
TMask m("cg2200a");
TCursor& cur = *m.efield(F_FROMDATE).browse()->cursor();
TLocalisamfile& mov = cur.file(LF_MOV);
TLocalisamfile rmov(LF_RMOV);
TLocalisamfile rmoviva(LF_RMOVIVA);
while (m.run() != K_QUIT)
{
TRecnotype last = cur.items()-1;
mov.zero();
const char* s = m.get(F_TODATE);
if (*s)
{
mov.put(MOV_DATAREG, s);
mov.put(MOV_NUMREG, m.get(F_TOREG));
last = cur.read();
}
mov.zero();
mov.put(MOV_DATAREG, m.get(F_FROMDATE));
mov.put(MOV_NUMREG, m.get(F_FROMREG));
const TRecnotype first = cur.read();
const TRecnotype total = last-first+1;
TString80 caption("Cancellazione di ");
add_plural(caption, total, "movimento");
if (!yesno_box(caption) || total < 1)
continue;
TProgind pi(total, caption, FALSE, TRUE, 24);
for (cur = first; cur.pos() <= last; ++cur)
{
const long numreg = mov.get_long(MOV_NUMREG);
int err = cur.lock();
for (int rig = 1; err == NOERR; rig++)
{
rmov.put(RMV_NUMREG, numreg);
rmov.put(RMV_NUMRIG, rig);
if (rmov.read(_isequal, _lock) != NOERR) break;
err = rmov.remove();
if (err != NOERR)
caption.format("riga contabile %d", rig);
}
for (rig = 1; err == NOERR; rig++)
{
rmoviva.put(RMI_NUMREG, numreg);
rmoviva.put(RMI_NUMRIG, rig);
if (rmoviva.read(_isequal, _lock) != NOERR) break;
err = rmov.remove();
if (err != NOERR)
caption.format("riga IVA %d", rig);
}
if (err == NOERR)
{
mov.setkey(1); // Isam bug on remove with key != 1
err = mov.remove();
}
else
caption = "testata";
if (err == NOERR)
pi.addstatus(1);
else
{
error_box("Errore %d nella cancellazione della %s del movimento %ld",
err, (const char*)caption, numreg);
break;
}
}
}
return FALSE;
}
int cg2200(int argc, char** argv)
{
TDeleteprovv_app a;
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
#include <isam.h>
#include <config.h>
#include <mask.h>
#include <utility.h>
#include <printapp.h>
#include <progind.h>
#include <tabutil.h>
#include <urldefid.h>
#include <printapp.h>
#include <config.h>
#include <progind.h>
#include <utility.h>
#include <mov.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)
{
int i = 1;
TString16 frm;
const char * r;
const char* frm;
const char* r;
switch (des)
{
@ -1105,10 +1104,11 @@ void CG3400_application::setta_righe_descr(TParagraph_string* str, enum descr de
frm = "@69g%s";
break;
default:
frm = "";
break;
}
while ((r = str->get()) != NULL)
set_row (i++, (const char*)frm, r);
set_row (i++, frm, r);
}
// NB
@ -1121,23 +1121,28 @@ int CG3400_application::setta_righe_iva()
for (j = 0; j < _iva_array.items(); j++)
{
TRigaiva& riga = (TRigaiva&)_iva_array[j];
TRigaiva& riga = _iva_array.riga(j);
r = j+1;
set_row(r, "Imponibile@12g%r", &riga._imponibile);
set_row(r, "@31gImposta@39g%r", &riga._imposta);
set_row(r, "@58gCodice Iva@68g%3s", (const char*)riga._codiva);
switch (riga._tipodet)
{
case 0 : set_row(r, "@73gDetraibile");
break;
case 1 : set_row(r, "@73gIndetraibile su op.es.");
break;
case 3 : set_row(r, "@73gPassaggi interni");
break;
case 9 : set_row(r, "@73gIndetraibile art.19");
break;
default: break;
}
case 0:
set_row(r, "@73gDetraibile");
break;
case 1:
set_row(r, "@73gIndetraibile su op.es.");
break;
case 3:
set_row(r, "@73gPassaggi interni");
break;
case 9:
set_row(r, "@73gIndetraibile art.19");
break;
default:
break;
}
}
_iva_array.destroy();
set_row (j+1, ""); // lascio una riga vuota dopo tutto cio'

View File

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

View File

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