Corretta stampa mastrini: loop infinito e mancata cancellazione cursore

Corretta maschera sheet causali
Tentata correzione tipo cr nelle righe iva


git-svn-id: svn://10.65.10.50/trunk@445 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-10-24 15:04:39 +00:00
parent bb4279849b
commit ef15b9b004
14 changed files with 370 additions and 319 deletions

View File

@ -8,15 +8,15 @@ ENDPAGE
PAGE "Piano dei conti " 0 -1 0 19 PAGE "Piano dei conti " 0 -1 0 19
GROUPBOX DLG_NULL 70 4 GROUPBOX DLG_NULL 76 4
BEGIN BEGIN
PROMPT 2 0 "" PROMPT 1 0 ""
FLAGS "R" FLAGS "R"
END END
NUMBER FLD_CM1_GRUPPO 3 NUMBER FLD_CM1_GRUPPO 3
BEGIN BEGIN
PROMPT 4 1 "Gruppo " PROMPT 6 1 "Gruppo "
FIELD LF_PCON->GRUPPO FIELD LF_PCON->GRUPPO
FLAGS "R" FLAGS "R"
KEY 1 KEY 1
@ -30,7 +30,7 @@ END
NUMBER FLD_CM1_CONTO 3 NUMBER FLD_CM1_CONTO 3
BEGIN BEGIN
PROMPT 25 1 "Conto " PROMPT 31 1 "Conto "
FIELD LF_PCON->CONTO FIELD LF_PCON->CONTO
FLAGS "R" FLAGS "R"
KEY 1 KEY 1
@ -47,7 +47,7 @@ END
NUMBER FLD_CM1_SOTTOCONTO 6 NUMBER FLD_CM1_SOTTOCONTO 6
BEGIN BEGIN
PROMPT 48 1 "Sottoconto " PROMPT 51 1 "Sottoconto "
FIELD LF_PCON->SOTTOCONTO FIELD LF_PCON->SOTTOCONTO
FLAGS "R" FLAGS "R"
KEY 1 KEY 1
@ -67,7 +67,7 @@ END
STRING FLD_CM1_DESC 50 STRING FLD_CM1_DESC 50
BEGIN BEGIN
PROMPT 4 2 "Descrizione " PROMPT 6 2 "Descrizione "
FIELD LF_PCON->DESCR FIELD LF_PCON->DESCR
KEY 2 KEY 2
USE LF_PCON KEY 2 USE LF_PCON KEY 2
@ -85,48 +85,48 @@ END
NUMBER FLD_CM1_CODTABANALISI 10 NUMBER FLD_CM1_CODTABANALISI 10
BEGIN BEGIN
PROMPT 4 5 "Codice Tabella Analisi " PROMPT 1 5 "Codice Tabella Analisi "
FIELD LF_PCON->CODCBL FIELD LF_PCON->CODCBL
FLAGS "R" FLAGS "R"
END END
NUMBER FLD_CM1_CODANALISIH 10 NUMBER FLD_CM1_CODANALISIH 10
BEGIN BEGIN
PROMPT 4 5 "Codice Tabella Analisi " PROMPT 1 5 "Codice Tabella Analisi "
FLAGS "RHD" FLAGS "RHD"
END END
LIST FLD_CM1_INDBIL 1 17 LIST FLD_CM1_INDBIL 1 22
BEGIN BEGIN
PROMPT 4 6 "Sezione di bilancio " PROMPT 1 6 "Sezione di bilancio "
FIELD LF_PCON->INDBIL FIELD LF_PCON->INDBIL
GROUP 1 3 GROUP 1 3
HELP "Inserire l' indicatore di bilancio" HELP "Indicatore di bilancio"
ITEM "1|Attivita'" ITEM "1|1. Attivita'"
ITEM "2|Passivita'" ITEM "2|2. Passivita'"
ITEM "3|Costi" ITEM "3|3. Costi"
ITEM "4|Ricavi" ITEM "4|4. Ricavi"
ITEM "5|Conti d'ordine" ITEM "5|5. Conti d'ordine"
END END
LIST FLD_CM1_SEZIVD 1 19 LIST FLD_CM1_SEZIVD 1 22
BEGIN BEGIN
PROMPT 4 7 "Sez. e classe IV dir.: " PROMPT 1 7 "Sez. e classe IV dir. "
FIELD LF_PCON->SEZIVD FIELD LF_PCON->SEZIVD
GROUP 1 4 GROUP 1 4
ITEM "0|Nessuna" MESSAGE CLEAR,5@|CLEAR,6@ ITEM "0|0. Nessuna" MESSAGE CLEAR,5@|CLEAR,6@
ITEM "1|Attivita'" MESSAGE ENABLE,5@|ENABLE,6@ ITEM "1|1. Attivita'" MESSAGE ENABLE,5@|ENABLE,6@
ITEM "2|Passivita'" MESSAGE ENABLE,5@|ENABLE,6@ ITEM "2|2. Passivita'" MESSAGE ENABLE,5@|ENABLE,6@
ITEM "9|Conto economico" MESSAGE ENABLE,5@|ENABLE,6@ ITEM "5|5. Conto d'ordine" MESSAGE CLEAR,5@|ENABLE,6@
ITEM "5|Conto d'ordine" MESSAGE CLEAR,5@|ENABLE,6@ ITEM "6|6. C.ordine attivo" MESSAGE CLEAR,5@|ENABLE,6@
ITEM "6|C.ordine attivo" MESSAGE CLEAR,5@|ENABLE,6@ ITEM "7|7. C.ordine passivo" MESSAGE CLEAR,5@|ENABLE,6@
ITEM "7|C.ordine passivo" MESSAGE CLEAR,5@|ENABLE,6@ ITEM "9|9. Conto economico" MESSAGE ENABLE,5@|ENABLE,6@
HELP "Inserire il codice del conto secondo la IV direttiva CEE" HELP "Codice del conto secondo la IV direttiva CEE"
END END
STRING FLD_CM1_LETTIVD 1 1 STRING FLD_CM1_LETTIVD 1 1
BEGIN BEGIN
PROMPT 51 7 "" PROMPT 56 7 ""
FIELD LF_PCON->LETTIVD FIELD LF_PCON->LETTIVD
GROUP 1 5 GROUP 1 5
FLAGS "U" FLAGS "U"
@ -134,14 +134,14 @@ END
STRING FLD_CM1_LETTIVDH 1 STRING FLD_CM1_LETTIVDH 1
BEGIN BEGIN
PROMPT 51 7 "" PROMPT 56 7 ""
FLAGS "HDU" FLAGS "HDU"
GROUP 5 GROUP 5
END END
NUMBER FLD_CM1_NUMRIVD 8 4 NUMBER FLD_CM1_NUMRIVD 8 4
BEGIN BEGIN
PROMPT 55 7 "" PROMPT 60 7 ""
FIELD LF_PCON->NUMRIVD FIELD LF_PCON->NUMRIVD
GROUP 1 5 GROUP 1 5
FLAGS "MZ" FLAGS "MZ"
@ -149,14 +149,14 @@ END
NUMBER FLD_CM1_NUMRIVDH 8 4 NUMBER FLD_CM1_NUMRIVDH 8 4
BEGIN BEGIN
PROMPT 55 7 "" PROMPT 60 7 ""
FLAGS "HDMZ" FLAGS "HDMZ"
GROUP 5 GROUP 5
END END
NUMBER FLD_CM1_NUMIVD 2 NUMBER FLD_CM1_NUMIVD 2
BEGIN BEGIN
PROMPT 66 7 "" PROMPT 71 7 ""
FIELD LF_PCON->NUMIVD FIELD LF_PCON->NUMIVD
FLAGS "RZ" FLAGS "RZ"
GROUP 1 5 GROUP 1 5
@ -180,29 +180,29 @@ END
NUMBER FLD_CM1_NUMIVDH 2 NUMBER FLD_CM1_NUMIVDH 2
BEGIN BEGIN
PROMPT 66 7 "" PROMPT 71 7 ""
FLAGS "HDRZ" FLAGS "HDRZ"
GROUP 1 5 GROUP 1 5
END END
LIST FLD_CM1_SEZIVDOPP 1 19 LIST FLD_CM1_SEZIVDOPP 1 22
BEGIN BEGIN
PROMPT 4 8 "Classe segno opp.: " PROMPT 1 8 "Classe segno opposto "
FIELD LF_PCON->SEZIVDOPP FIELD LF_PCON->SEZIVDOPP
GROUP 1 2 4 6 GROUP 1 2 4 6
ITEM "0|Nessuna" MESSAGE CLEAR,7@ ITEM "0|0. Nessuna" MESSAGE CLEAR,7@
ITEM "1|Attivita'" MESSAGE ENABLE,7@ ITEM "1|1. Attivita'" MESSAGE ENABLE,7@
ITEM "2|Passivita'" MESSAGE ENABLE,7@ ITEM "2|2. Passivita'" MESSAGE ENABLE,7@
ITEM "9|Conto economico" MESSAGE ENABLE,7@ ITEM "5|5. Conto d'ordine" MESSAGE CLEAR,7@
ITEM "5|Conto d'ordine" MESSAGE CLEAR,7@ ITEM "6|6. C.ordine attivo" MESSAGE CLEAR,7@
ITEM "6|C.ordine attivo" MESSAGE CLEAR,7@ ITEM "7|7. C.ordine passivo" MESSAGE CLEAR,7@
ITEM "7|C.ordine passivo" MESSAGE CLEAR,7@ ITEM "9|9. Conto economico" MESSAGE ENABLE,7@
HELP "Inserire il codice del conto di sezione opposta secondo la IV direttiva CEE" HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
END END
STRING FLD_CM1_LETTIVDOPP 1 STRING FLD_CM1_LETTIVDOPP 1
BEGIN BEGIN
PROMPT 51 8 "" PROMPT 56 8 ""
FIELD LF_PCON->LETTIVDOPP FIELD LF_PCON->LETTIVDOPP
FLAGS "U" FLAGS "U"
GROUP 1 2 4 7 GROUP 1 2 4 7
@ -210,7 +210,7 @@ END
NUMBER FLD_CM1_NUMRIVDOPP 8 4 NUMBER FLD_CM1_NUMRIVDOPP 8 4
BEGIN BEGIN
PROMPT 55 8 "" PROMPT 60 8 ""
FIELD LF_PCON->NUMRIVDOPP FIELD LF_PCON->NUMRIVDOPP
FLAGS "MZ" FLAGS "MZ"
GROUP 1 2 4 7 GROUP 1 2 4 7
@ -218,7 +218,7 @@ END
NUMBER FLD_CM1_NUMIVDOPP 2 NUMBER FLD_CM1_NUMIVDOPP 2
BEGIN BEGIN
PROMPT 66 8 "" PROMPT 71 8 ""
FIELD LF_PCON->NUMIVDOPP FIELD LF_PCON->NUMIVDOPP
FLAGS "RZ" FLAGS "RZ"
GROUP 1 2 4 7 GROUP 1 2 4 7
@ -236,25 +236,25 @@ BEGIN
WARNING "Codice non presente" WARNING "Codice non presente"
END END
LIST FLD_CM1_TIPOSPRIC 1 45 LIST FLD_CM1_TIPOSPRIC 1 50
BEGIN BEGIN
PROMPT 4 9 "Tipo Spesa/Ricavo " PROMPT 1 9 "Tipo Spesa/Ricavo "
FIELD LF_PCON->TIPOSPRIC FIELD LF_PCON->TIPOSPRIC
GROUP 1 2 GROUP 1 2
HELP "Specificare il tipo Spesa/Ricavo" HELP "Specificare il tipo Spesa/Ricavo"
ITEM "0|Acquisti o vendite in genere" ITEM "0|0. Acquisti o vendite in genere"
ITEM "1|Acquisti beni per rivendita" ITEM "1|1. Acquisti beni per rivendita"
ITEM "2|Acquisti beni ammortizzabili" ITEM "2|2. Acquisti beni ammortizzabili"
ITEM "3|Acquisti beni ammortizzabili con detr. 6%" ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%"
ITEM "4|Vendita beni strumentali art. 17" ITEM "4|4. Vendita beni strumentali art. 17"
ITEM "5|Beni per rivendita da non ventilare" ITEM "5|5. Beni per rivendita da non ventilare"
ITEM "8|Altri beni strumentali acquistati in leasing" ITEM "8|8. Altri beni strumentali acquistati in leasing"
ITEM "9|Spese Generali" ITEM "9|9. Spese Generali"
END END
LIST FLD_CM1_RICSER 1 18 LIST FLD_CM1_RICSER 1 18
BEGIN BEGIN
PROMPT 4 10 "Ricavi per servizi " PROMPT 1 10 "Ricavi per servizi "
FIELD RICSER FIELD RICSER
FLAGS "H" FLAGS "H"
ITEM "0|Altre attivita'" ITEM "0|Altre attivita'"
@ -263,7 +263,7 @@ END
LIST FLD_CM1_TMCF 1 13 LIST FLD_CM1_TMCF 1 13
BEGIN BEGIN
PROMPT 4 11 "Tipo sottoconti " PROMPT 1 11 "Tipo sottoconti "
FIELD LF_PCON->TMCF FIELD LF_PCON->TMCF
GROUP 1 3 GROUP 1 3
HELP "Inserire il tipo dei sottoconti" HELP "Inserire il tipo dei sottoconti"
@ -274,7 +274,7 @@ END
LIST FLD_CM2_SEZSALDI 1 10 LIST FLD_CM2_SEZSALDI 1 10
BEGIN BEGIN
PROMPT 4 12 "Controllo saldo primanota " PROMPT 1 12 "Controllo saldo primanota "
FIELD LF_PCON->SEZSALDI FIELD LF_PCON->SEZSALDI
GROUP 1 GROUP 1
ITEM " |Nessuno" ITEM " |Nessuno"
@ -284,7 +284,7 @@ END
BOOLEAN FLD_CM2_STSOTTBIL BOOLEAN FLD_CM2_STSOTTBIL
BEGIN BEGIN
PROMPT 4 14 "Stampa dettaglio sottoconti su bilanci " PROMPT 1 14 "Stampa dettaglio sottoconti su bilanci "
FIELD LF_PCON->STSOTTBIL FIELD LF_PCON->STSOTTBIL
GROUP 1 3 GROUP 1 3
END END
@ -298,7 +298,7 @@ END
BOOLEAN FLD_CM2_STSOTTAB BOOLEAN FLD_CM2_STSOTTAB
BEGIN BEGIN
PROMPT 4 15 "Stampa dettaglio sottoconti su analisi " PROMPT 1 15 "Stampa dettaglio sottoconti su analisi "
FIELD LF_PCON->STSOTTAB FIELD LF_PCON->STSOTTAB
GROUP 1 3 GROUP 1 3
MESSAGE COPY,FLD_CM2_STSOTTABS MESSAGE COPY,FLD_CM2_STSOTTABS
@ -306,7 +306,7 @@ END
BOOLEAN FLD_CM2_STSOTTABS BOOLEAN FLD_CM2_STSOTTABS
BEGIN BEGIN
PROMPT 4 15 "Stampa dettaglio movimenti su analisi " PROMPT 1 15 "Stampa dettaglio movimenti su analisi "
FIELD LF_PCON->STSOTTAB FIELD LF_PCON->STSOTTAB
FLAGS "H" FLAGS "H"
GROUP 1 2 GROUP 1 2

View File

@ -30,9 +30,7 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
OUTPUT 103 GRUPPO OUTPUT 103 GRUPPO
OUTPUT 107 DESCR OUTPUT 107 DESCR
// OUTPUT 102 TMCF
WARNING "Gruppo assente" WARNING "Gruppo assente"
// CHECKTYPE REQUIRED
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 1 GROUP 1
ADD RUN CG0 -0 ADD RUN CG0 -0
@ -54,8 +52,10 @@ BEGIN
OUTPUT 104 CONTO OUTPUT 104 CONTO
OUTPUT 103 GRUPPO OUTPUT 103 GRUPPO
OUTPUT 107 DESCR OUTPUT 107 DESCR
OUTPUT 207 DESCR
OUTPUT 307 DESCR
MESSAGE DIRTY,105|DIRTY,205|DIRTY,305 MESSAGE DIRTY,105|DIRTY,205|DIRTY,305
WARNING "Conto inesistente o mancante" WARNING "Conto assente"
ADD RUN CG0 -0 ADD RUN CG0 -0
GROUP 1 GROUP 1
END END
@ -73,11 +73,11 @@ BEGIN
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Tipo C/F" TMCF
OUTPUT 105 SOTTOCONTO OUTPUT 105 SOTTOCONTO
OUTPUT 102 TMCF OUTPUT 205 SOTTOCONTO
OUTPUT 104 CONTO OUTPUT 305 SOTTOCONTO
OUTPUT 103 GRUPPO OUTPUT 103 GRUPPO
OUTPUT 104 CONTO
OUTPUT 107 DESCR OUTPUT 107 DESCR
ADD RUN CG0 -0 ADD RUN CG0 -0
CHECKTYPE NORMAL CHECKTYPE NORMAL
@ -100,6 +100,8 @@ BEGIN
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
OUTPUT 205 CODCF OUTPUT 205 CODCF
OUTPUT 105 CODCF
OUTPUT 305 CODCF
OUTPUT 207 RAGSOC OUTPUT 207 RAGSOC
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN CG0 -1 ADD RUN CG0 -1
@ -119,6 +121,8 @@ BEGIN
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
OUTPUT 305 CODCF OUTPUT 305 CODCF
OUTPUT 105 CODCF
OUTPUT 205 CODCF
OUTPUT 307 RAGSOC OUTPUT 307 RAGSOC
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN CG0 -1 ADD RUN CG0 -1
@ -157,7 +161,7 @@ END
// Descrizione CLIENTE // Descrizione CLIENTE
STRING 207 50 STRING 207 50
BEGIN BEGIN
PROMPT 1 5 "Rag.sociale " PROMPT 1 5 "Rag. Soc. "
FIELD LF_RCAUSALI->DESC FIELD LF_RCAUSALI->DESC
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "C" INPUT TIPOCF "C"
@ -175,7 +179,7 @@ END
// Descrizione FORNITORE // Descrizione FORNITORE
STRING 307 50 STRING 307 50
BEGIN BEGIN
PROMPT 1 5 "Rag.sociale " PROMPT 1 5 "Rag. Soc. "
FIELD LF_RCAUSALI->DESC FIELD LF_RCAUSALI->DESC
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "F" INPUT TIPOCF "F"
@ -190,7 +194,7 @@ BEGIN
GROUP 1 GROUP 1
END END
STRING 108 3 STRING 108 5
BEGIN BEGIN
PROMPT 1 7 "Descrizione aggiuntiva " PROMPT 1 7 "Descrizione aggiuntiva "
FIELD LF_RCAUSALI->CODDESC FIELD LF_RCAUSALI->CODDESC

View File

@ -452,6 +452,8 @@ bool TPrimanota_application::get_conto(const TRectype& r, TBill& c) const
{ {
c.set(r.get_int("GRUPPO"), r.get_int("CONTO"), c.set(r.get_int("GRUPPO"), r.get_int("CONTO"),
r.get_long("SOTTOCONTO"), r.get_char("TIPOC")); r.get_long("SOTTOCONTO"), r.get_char("TIPOC"));
if (r.num() == LF_RMOVIVA)
c.tipo_cr(r.get_int("TIPOCR"));
return c.ok(); return c.ok();
} }

View File

@ -117,33 +117,15 @@ bool TPrimanota_application::suspended_handler(TMask_field& f, KEY k)
// Certified 70% // Certified 70%
bool TPrimanota_application::detraibile(TToken_string& row) bool TPrimanota_application::detraibile(TToken_string& row)
{ {
if (app().iva() == iva_vendite) // Vendite sempre detraibili
return TRUE;
const int tipo_det = row.get_int(2); // Leggi tipo detraibilita const int tipo_det = row.get_int(2); // Leggi tipo detraibilita
if (tipo_det != 0) if (tipo_det != 0)
return FALSE; return FALSE;
if (app().iva() == iva_vendite) // Vendite sempre detraibili const real& prorata = app().causale().reg().prorata();
return TRUE; return prorata != 100.0; // Se prorata = 100% e' indetraibile
TRegistro& reg = app().causale().reg();
TString16 chiave;
chiave << app().curr_mask().get(F_ANNOIVA) << reg.attivita();
int tipoatt = 1;
if (reg.attivita_mista()) // Se attivita mista ...
{
TBill bill(row, 5, 0x1);
tipoatt = bill.tipo_att(); // ... determina attivita
}
chiave << tipoatt; // anno|attivita|tipo_attivita
TTable pla("PLA");
pla.put("CODTAB", chiave);
const int err = pla.read();
real prorata;
if (err == NOERR)
prorata = pla.get_real("R8");
return prorata != 100.0;
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -578,6 +560,17 @@ TSheet_field& TPrimanota_application::ivas() const
} }
TBill& TPrimanota_application::ivas_bill(TBill& c)
{
int spric = c.tipo_cr();
if (spric == 2 || spric == 3)
{
const TFixed_string td(causale().tipo_doc());
if (td == "FV" || td == "NC") c.tipo_cr(4);
}
return c;
}
void TPrimanota_application::set_ivas_row(int nriga, const char* codiva, TBill& tc, void TPrimanota_application::set_ivas_row(int nriga, const char* codiva, TBill& tc,
const char* desc) const char* desc)
{ {
@ -585,7 +578,7 @@ void TPrimanota_application::set_ivas_row(int nriga, const char* codiva, TBill&
riga = " "; // Importo riga = " "; // Importo
riga.add (codiva); // codiva riga.add (codiva); // codiva
riga.add (" | "); // Det - Imposta riga.add (" | "); // Det - Imposta
riga.add(tc.string(0x7)); // Conto riga.add(ivas_bill(tc).string(0x7)); // Conto
riga.add(desc); // Descrizione riga.add(desc); // Descrizione
} }
@ -623,6 +616,7 @@ bool TPrimanota_application::codiva_handler(TMask_field& f, KEY key)
TCodiceIVA iva(f.get()); TCodiceIVA iva(f.get());
TBill b; app().IVA2bill(iva, b); TBill b; app().IVA2bill(iva, b);
m.set(105, b.tipo_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());
@ -726,25 +720,35 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
if (k == K_SPACE) if (k == K_SPACE)
{ {
oldimp = real(row.get(0)); // Imponibile 0 oldimp = real(row.get(0)); // Imponibile
oldiva = real(row.get(3)); // Imposta 3 oldiva = real(row.get(3)); // Imposta
if (oldiva.is_zero() && app().causale().corrispettivi())
{ if (oldiva.is_zero() && cau.corrispettivi())
{ // In caso di corrispettivi ...
const TCodiceIVA i(row.get(1)); const TCodiceIVA i(row.get(1));
const real percent = i.percentuale(); const real percent = i.percentuale();
oldiva = scorpora(oldimp, percent); oldiva = scorpora(oldimp, percent); // ... scorpora imposta dall'imponibile
} }
const char tipod = detraibile(row) ? 'D' : 'N'; const char tipod = detraibile(row) ? 'D' : 'N';
oldposiva = type2pos(tipod); oldposiva = type2pos(tipod);
if (oldposiva < 0 && oldiva != ZERO) if (oldposiva < 0 && !oldiva.is_zero())
{ {
const int ri = tipod == 'D' ? 3 : 4; const int ri = tipod == 'D' ? 3 : 4; // Calcola riga causale per l'IVA
TBill c; cau.bill(ri, c); TBill c; cau.bill(ri, c);
if (c.ok())
{
const TString80 d(cau.desc_agg(ri)); const TString80 d(cau.desc_agg(ri));
oldposiva = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), c, d, tipod); oldposiva = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), c, d, tipod);
} }
else
if (ri == 4) // Se non esiste il conto IVA indetraibile ...
{ // ... somma imponibile e imposta
oldimp += oldiva;
oldiva = 0.0;
}
}
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'); oldpos = bill2pos(oldconto, 'I');
@ -754,7 +758,7 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
oldpos = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), oldconto, d, 'I'); oldpos = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), oldconto, d, 'I');
} }
} }
if (k == K_DEL) if (k == K_DEL) // Cancellazione di una riga
{ {
row.add("0", 0); // Azzera imponibile row.add("0", 0); // Azzera imponibile
row.add("0", 3); // Azzera imposta row.add("0", 3); // Azzera imposta
@ -762,80 +766,86 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
} }
if (k == K_ENTER) if (k == K_ENTER)
{ {
int delimp = -1, deliva = -1; int delimp = -1, deliva = -1; // Eventuali righe da cancellare
if (oldpos >= 0) // Il conto esisteva anche prima if (oldpos >= 0) // Se il conto esisteva anche prima ...
{ { // sottrai il vecchio imponibile
const TImporto& imp = app().sub_cgs_imp(oldpos, oldimp); const TImporto imp = app().sub_cgs_imp(oldpos, oldimp);
if (imp.valore().is_zero) delimp = oldpos; if (imp.is_zero) delimp = oldpos;
} }
if (oldposiva >= 0) // Il conto IVA esisteva anche prima if (oldposiva >= 0) // Se conto IVA esisteva anche prima ...
{ { // sottrai la vecchia imposta
const TImporto& imp = app().sub_cgs_imp(oldposiva, oldiva); const TImporto imp = app().sub_cgs_imp(oldposiva, oldiva);
if (imp.valore().is_zero) deliva = oldposiva; if (imp.is_zero) deliva = oldposiva;
} }
// Aggiorna conto sulla riga contabile real imponibile(row.get(0)); // Nuovo imponibile
real imp(row.get(0)); // Imponibile real imposta(row.get(3)); // Nuova imposta
real imposta(row.get(3)); // Imposta
if (imposta.is_zero() && app().causale().corrispettivi()) if (imposta.is_zero() && app().causale().corrispettivi())
{ { // In caso di corrispettivi ...
const TCodiceIVA i(row.get(1)); const TCodiceIVA i(row.get(1));
const real percent = i.percentuale(); const real percent = i.percentuale();
imposta = scorpora(imp, percent); imposta = scorpora(imponibile, percent); // ... scorpora imposta dall'imponibile
} }
TBill conto(row, 5, 0x3); TBill conto(row, 5, 0x3);
int newpos = bill2pos(conto, 'I'); int newpos = bill2pos(conto, 'I'); // Riga in cui andra' l'imponibile
TString80 d;
const bool detrarre = detraibile(row); // Determina se IVA detraibile
const int ri = detrarre ? 3 : 4; // Calcola riga causale col conto opportuno
TBill contoiva; app().causale().bill(ri, contoiva);
if (ri == 4 && !contoiva.ok()) // Se non c'e' il conto IVA indetraibile ...
{ // ... somma imponibile e imposta
imponibile += imposta;
imposta = 0.0;
}
// Aggiorna conto sulla riga contabile
if (newpos < 0) if (newpos < 0)
{ {
if (delimp >= 0) app().reset_cgs_row(delimp); if (delimp >= 0) app().reset_cgs_row(delimp); // Cancella vecchia riga
const TImporto val(app().real2imp(imp, 'I')); const TImporto val(app().real2imp(imponibile, 'I'));
if (val.valore() != ZERO) if (!val.is_zero()) // Se c'e' imponibile ...
{ { // crea una nuova riga contabile
d = cau.desc_agg(2); const TString80 d(cau.desc_agg(2));
app().set_cgs_row(-1, val, conto, d, 'I'); app().set_cgs_row(-1, val, conto, d, 'I');
} }
} }
else else
{ {
TImporto val(app().real2imp(imp, 'I')); TImporto val(app().real2imp(imponibile, 'I'));
val = app().add_cgs_imp(newpos, val); val = app().add_cgs_imp(newpos, val);
if (val.valore().is_zero()) if (val.valore().is_zero()) // Se la riga si e' azzerata ...
{ { // ... cancellala
app().reset_cgs_row(newpos); app().reset_cgs_row(newpos);
newpos = -1; newpos = -1;
} }
} }
oldimp = imp; oldimp = imponibile;
oldpos = newpos; oldpos = newpos;
// Aggiorna conto IVA sulla riga contabile // Aggiorna conto IVA sulla riga contabile
const bool detrarre = detraibile(row); // Determina se IVA detraibile
const int ri = detrarre ? 3 : 4;
app().causale().bill(ri, conto);
const char tipod = detrarre ? 'D' : 'N'; const char tipod = detrarre ? 'D' : 'N';
int newposiva = type2pos(tipod); int newposiva = type2pos(tipod);
if (newposiva < 0) if (newposiva < 0)
{ {
if (!imposta.is_zero()) // Se c'e' imposta ...
{ // ... crea nuova riga per l'IVA
const TImporto val(app().real2imp(imposta, 'I')); const TImporto val(app().real2imp(imposta, 'I'));
if (val.valore() != ZERO) const TString80 d(cau.desc_agg(ri));
{ newposiva = app().set_cgs_row(-1, val, contoiva, d, tipod);
d = cau.desc_agg(ri);
newposiva = app().set_cgs_row(-1, val, conto, 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.valore().is_zero()) if (val.is_zero()) // Se la riga si e' azzerata ...
{ {
app().reset_cgs_row(newposiva); app().reset_cgs_row(newposiva); // ... cancellala
newposiva = -1; newposiva = -1;
} }
} }
@ -843,10 +853,10 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
oldiva = imposta; oldiva = imposta;
oldposiva = newposiva; oldposiva = newposiva;
if (r == 0) if (r == 0) // Se cambio la prima riga ...
app().add_cgs_tot(app().curr_mask()); app().add_cgs_tot(app().curr_mask()); // ... ricalcola conti
app().calcola_imp(); app().calcola_imp(); // Ricalcola totale IVA
app().calcola_saldo(); app().calcola_saldo(); // Ricalcola sbilanci
} }
return TRUE; return TRUE;
} }
@ -914,14 +924,16 @@ bool TPrimanota_application::iva_sottoconto_handler(TMask_field& f, KEY key)
if (key == K_TAB && f.dirty() && !app().causale().corrispettivi()) if (key == K_TAB && f.dirty() && !app().causale().corrispettivi())
{ {
TMask& m = f.mask(); const TLocalisamfile& piano = ((TEdit_field&)f).browse()->cursor()->file();
const TFixed_string td(app().causale().tipo_doc()); int spric = piano.get_int("TIPOSPRIC");
if (td == "FV" || td == "NC") // Nun lo vulevo fa' CASAP if (spric == 2 || spric == 3)
{ {
const int cr = m.get_int(105); const TFixed_string td(app().causale().tipo_doc());
if (cr == 2 || cr == 3) if (td == "FV" || td == "NC") spric = 4;
m.set(105, 4);
} }
TMask_field& s = f.mask().field(105);
if (app().iva() == iva_vendite || s.get().empty())
s.set(spric > 0 ? format("%d", spric) : "");
} }
return TRUE; return TRUE;
} }
@ -1009,13 +1021,8 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key)
const TCausale c(cau, ann); const TCausale c(cau, ann);
if (!c.ok()) return FALSE; if (!c.ok()) return FALSE;
ok = app().causale().similar(c); ok = app().causale().similar(c);
if (!ok) if (!ok) return FALSE;
{
f.error_box("Causale incongruente con quella inserita precedentemente");
return FALSE;
}
app().causale().read(cau, ann); app().causale().read(cau, ann);
} }
@ -1280,6 +1287,8 @@ bool TPrimanota_application::IVA2bill(const TCodiceIVA& iva, TBill& bill)
if (!bill.ok()) if (!bill.ok())
cau.bill(2, bill); cau.bill(2, bill);
ivas_bill(bill);
return bill.ok(); return bill.ok();
} }

View File

@ -137,6 +137,7 @@ protected:
int bill2contr(const TBill& c, char sezione) const; int bill2contr(const TBill& c, char sezione) const;
int bill_used(const TBill& conto) const; int bill_used(const TBill& conto) const;
int det_used(char detraib) const; int det_used(char detraib) const;
TBill& ivas_bill(TBill& tc);
bool read_caus(const char* cod, int year); bool read_caus(const char* cod, int year);
TCausale& causale() { return _causale; } TCausale& causale() { return _causale; }

View File

@ -58,6 +58,7 @@ 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;
} }
@ -94,12 +95,11 @@ const TString& TRegistro::name() const
} }
TRegistro& TRegistro::operator =(const TRegistro& r) TRegistro& TRegistro::operator =(const TRegistro& r)
{ {
_rec = r._rec; _rec = r._rec;
_att = r._att; _att = r._att;
_prorata = r._prorata;
return *this; return *this;
} }
@ -169,6 +169,24 @@ const TString& TRegistro::tipo_attivita()
return _att.get("TIPOATT"); 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;
}
return _prorata;
}
// Certified 99% // Certified 99%
bool TRegistro::update(long protiva, const TDate& datareg) bool TRegistro::update(long protiva, const TDate& datareg)
@ -468,11 +486,17 @@ bool TCausale::corrispettivi() const
bool TCausale::similar(const TCausale& c) const bool TCausale::similar(const TCausale& c) const
{ {
return iva() == c.iva() && const char* err = "";
sezionale() == c.sezionale() && if (sezionale() != c.sezionale()) err = "il segnale di sezionale";
valuta() == c.valuta() && if (intra() != c.intra()) err = "la gestione dei movimenti intra";
intra() == c.intra() && if (valuta() != c.valuta()) err = "la gestione valuta";
corrispettivi() == c.corrispettivi(); if (corrispettivi() != c.corrispettivi()) err = "la gestione dei corrispettivi";
if (iva() != c.iva()) err = "il tipo di IVA";
if (*err)
error_box("La causale e' diversa per %s", err);
return *err ? FALSE : TRUE;
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////

View File

@ -27,6 +27,7 @@ class TRegistro : public TObject
protected: protected:
enum TipoRegistro { libro_giornale = 5 }; enum TipoRegistro { libro_giornale = 5 };
TRectype _rec, _att; TRectype _rec, _att;
real _prorata;
public: public:
bool read(const char* code, int year); bool read(const char* code, int year);
@ -47,8 +48,8 @@ public:
bool agenzia_viaggi(); bool agenzia_viaggi();
const TString& tipo_attivita(); const TString& tipo_attivita();
bool attivita_mista() { char a = tipo_attivita()[0]; return a == 'M' || a == 'E'; } bool attivita_mista() { const char a = tipo_attivita()[0]; return a == 'M' || a == 'E'; }
const real& prorata();
bool update(long uprotiva, const TDate& lastreg); bool update(long uprotiva, const TDate& lastreg);
TRegistro(const char* code = "", int year = 0); TRegistro(const char* code = "", int year = 0);
@ -134,6 +135,8 @@ public:
char sezione() const { return _sezione; } char sezione() const { return _sezione; }
const real& valore() const { return _valore; } const real& valore() const { return _valore; }
bool is_zero() const { return _valore.is_zero(); }
const TImporto& operator=(const TImporto& i) { return set(i.sezione(), i.valore()); } const TImporto& operator=(const TImporto& i) { return set(i.sezione(), i.valore()); }
const TImporto& operator=(TToken_string& sv); const TImporto& operator=(TToken_string& sv);
const TImporto& operator+=(const TImporto& i); const TImporto& operator+=(const TImporto& i);

View File

@ -89,7 +89,6 @@ BEGIN
OUTPUT 107 GRUPPO OUTPUT 107 GRUPPO
OUTPUT 108 CONTO OUTPUT 108 CONTO
OUTPUT 110 DESCR OUTPUT 110 DESCR
OUTPUT 105 TIPOSPRIC
ADD RUN cg0 -0 ADD RUN cg0 -0
MESSAGE DIRTY,109|DIRTY,209|DIRTY,309 MESSAGE DIRTY,109|DIRTY,209|DIRTY,309
CHECKTYPE NORMAL CHECKTYPE NORMAL
@ -110,7 +109,6 @@ BEGIN
DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
OUTPUT 109 SOTTOCONTO OUTPUT 109 SOTTOCONTO
OUTPUT 105 TIPOSPRIC
OUTPUT 107 GRUPPO OUTPUT 107 GRUPPO
OUTPUT 108 CONTO OUTPUT 108 CONTO
OUTPUT 110 DESCR OUTPUT 110 DESCR

View File

@ -16,7 +16,6 @@ MENUBAR MENU_BAR(1)
MENU MENU_BAR(1) MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File" SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Selezione"
/* ---------------------------------------------------- /* ----------------------------------------------------
@ -41,7 +40,6 @@ MENUBAR MENU_BAR(3)
MENU MENU_BAR(3) MENU MENU_BAR(3)
SUBMENU MENU_FILE "~File" SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Scelta parametri"
/* ---------------------------------------------------- /* ----------------------------------------------------
* cg3 -4 * cg3 -4
@ -50,5 +48,4 @@ MENUBAR MENU_BAR(4)
MENU MENU_BAR(4) MENU MENU_BAR(4)
SUBMENU MENU_FILE "~File" SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Selezione"

View File

@ -23,9 +23,7 @@
#include "cglib.h" #include "cglib.h"
#include "cglib03.h" #include "cglib03.h"
const MAXSTR = 128; static TString256 tmp;
static char __tmp [MAXSTR];
static TFixed_string tmp (__tmp, MAXSTR);
int date2esc(const TDate& d, int* prevesc = NULL); int date2esc(const TDate& d, int* prevesc = NULL);
@ -66,9 +64,9 @@ class CG3200_application : public TPrintapp
bool _stampaprogre,_stampatotiva,_stampatot,_prima_volta,_stampa_mov_prov; bool _stampaprogre,_stampatotiva,_stampatot,_prima_volta,_stampa_mov_prov;
int _annomsk,_annoesmsk,_annomsksucc,_tipo_mask,_anno_ghost; int _annomsk,_annoesmsk,_annoes,_annomsksucc,_tipo_mask,_anno_ghost;
int _anno_corrente,_anno_precedente,_indbil; int _anno_corrente,_anno_precedente,_indbil;
long _sottoc,_numreg,_annoes,_numgio,_protiva; long _sottoc,_numreg,_numgio,_protiva;
bool _stampa_progressivi_si,_competenza,_inizio_stampa,_puoi_stampare; bool _stampa_progressivi_si,_competenza,_inizio_stampa,_puoi_stampare;
char _tipocf,_tmcf; char _tipocf,_tmcf;
@ -119,22 +117,20 @@ public:
CG3200_application() {} CG3200_application() {}
}; };
HIDDEN CG3200_application * app() { return (CG3200_application*) MainApp(); } HIDDEN CG3200_application& app() { return (CG3200_application&) main_app(); }
void CG3200_application::process_link(int id, const char* txt) void CG3200_application::process_link(int id, const char* txt)
{ {
const char* const app = "cg2 -0";
TToken_string ss(10); TToken_string ss(10);
ss.add("1"); ss.add("1");
ss.add(txt); ss.add(txt);
const TString app("cg2");
TMessage fs(cmd2name(app,""), MSG_LN, ss); TMessage fs(cmd2name(app), MSG_LN, ss);
TMailbox m; fs.send();
m.send(fs);
TExternal_app pn(app); TExternal_app pn(app);
pn.run();
if (pn.run()) beep();
} }
int date2esc(const TDate& d, int* prevesc) int date2esc(const TDate& d, int* prevesc)
@ -145,8 +141,8 @@ int date2esc(const TDate& d, int* prevesc)
{ {
const TDate ia(esc.get("D0")); // Data inizio esercizio const TDate ia(esc.get("D0")); // Data inizio esercizio
const TDate fa(esc.get("D1")); // Data fine esercizio const TDate fa(esc.get("D1")); // Data fine esercizio
app()->_inizioEs = ia; app()._inizioEs = ia;
app()->_fineEs = fa; app()._fineEs = fa;
const anno = esc.get_int("CODTAB"); const anno = esc.get_int("CODTAB");
if (d >= ia && d <= fa) if (d >= ia && d <= fa)
return anno; return anno;
@ -218,24 +214,24 @@ bool CG3200_application::data_inizio(TMask_field& f, KEY k)
anno = f.mask().get_int(F_ANNO); anno = f.mask().get_int(F_ANNO);
data = f.mask().get (F_DATAINI); data = f.mask().get (F_DATAINI);
app()->_annomsk = anno; app()._annomsk = anno;
if (k == K_ENTER) if (k == K_ENTER)
{ {
if (anno != 0) if (anno != 0)
{ {
app()->data_fine_esercizio(anno); app().data_fine_esercizio(anno);
if (data == botime) if (data == botime)
app()->_data_ini = app()->_data_inizioese; app()._data_ini = app()._data_inizioese;
else else
if (data < app()->_data_inizioese || data > app()->_data_finese) if (data < app()._data_inizioese || data > app()._data_finese)
{ {
f.error_box("La data non appartiene all' esercizio indicato"); f.error_box("La data non appartiene all'esercizio indicato");
return FALSE; return FALSE;
} }
else else
app()->_data_ini = data; app()._data_ini = data;
} }
else else
if (anno == 0) if (anno == 0)
@ -246,7 +242,7 @@ bool CG3200_application::data_inizio(TMask_field& f, KEY k)
return FALSE; return FALSE;
} }
else else
app()->_data_ini = data; app()._data_ini = data;
} }
} }
return TRUE; return TRUE;
@ -260,24 +256,24 @@ bool CG3200_application::data_fine(TMask_field& f, KEY k)
annoes = f.mask().get_int(F_ANNO); annoes = f.mask().get_int(F_ANNO);
data = f.mask().get (F_DATAFINE); data = f.mask().get (F_DATAFINE);
data_ini = f.mask().get (F_DATAINI); data_ini = f.mask().get (F_DATAINI);
app()->_annomsk = annoes; app()._annomsk = annoes;
if (k == K_ENTER) if (k == K_ENTER)
{ {
if (annoes != 0) if (annoes != 0)
{ {
app()->data_fine_esercizio(annoes); app().data_fine_esercizio(annoes);
if (data == botime) if (data == botime)
app()->_data_fine = app()->_data_finese; app()._data_fine = app()._data_finese;
else else
if (data < app()->_data_inizioese || data > app()->_data_finese) if (data < app()._data_inizioese || data > app()._data_finese)
{ {
f.error_box("La data non appartiene all' esercizio indicato"); f.error_box("La data non appartiene all'esercizio indicato");
return FALSE; return FALSE;
} }
else else
app()->_data_fine = data; app()._data_fine = data;
} }
else else
if (annoes == 0) if (annoes == 0)
@ -288,15 +284,15 @@ bool CG3200_application::data_fine(TMask_field& f, KEY k)
return FALSE; return FALSE;
} }
app()->_anno_ghost = date2esc(data_ini); app()._anno_ghost = date2esc(data_ini);
if (data < app()->_inizioEs || data > app()->_fineEs) if (data < app()._inizioEs || data > app()._fineEs)
{ {
f.error_box("La data non appartiene all' esercizio indicato"); f.error_box("La data non appartiene all'esercizio indicato");
return FALSE; return FALSE;
} }
else else
app()->_data_fine = data; app()._data_fine = data;
} }
if (data < data_ini) if (data < data_ini)
@ -580,7 +576,7 @@ bool CG3200_application::preprocess_page(int file, int counter)
_mov->read(); _mov->read();
if (_mov->bad()) if (_mov->bad())
_mov->zero(); _mov->zero();
_annoes = atoi(_mov->curr().get(MOV_ANNOES)); _annoes = _mov->get_int(MOV_ANNOES);
_regiva = _mov->curr().get(MOV_REG); _regiva = _mov->curr().get(MOV_REG);
// Controlla se saldo e' diverso da 0 // Controlla se saldo e' diverso da 0
@ -848,14 +844,14 @@ void CG3200_application::documenti_iva()
void CG3200_application::ricerca_regiva() void CG3200_application::ricerca_regiva()
{ {
TString dep; TString16 dep;
_tabreg->curr().zero(); _tabreg->curr().zero();
dep << format("%04d", _annoes); dep << format("%04d", _annoes);
dep << format("%3s" , (const char*) _regiva); dep << format("%3s" , (const char*) _regiva);
_tabreg->curr().put("CODTAB", (const char*) dep); _tabreg->curr().put("CODTAB", (const char*) dep);
_tabreg->read(); _tabreg->read();
_tipo = atoi(_tabreg->curr().get("I0")); _tipo = _tabreg->get_int("I0");
} }
bool CG3200_application::preprocess_print(int file, int counter) bool CG3200_application::preprocess_print(int file, int counter)
@ -991,7 +987,7 @@ bool CG3200_application::set_print(int)
void CG3200_application::data_fine_esercizio(int anno) void CG3200_application::data_fine_esercizio(int anno)
{ {
TString dep; TString16 dep;
_tabesc->curr().zero(); _tabesc->curr().zero();
dep << format ("%04d", anno); dep << format ("%04d", anno);
@ -1086,7 +1082,7 @@ void CG3200_application::crea_intestazione()
set_header(2,"@1g%s",(const char*) sep1); set_header(2,"@1g%s",(const char*) sep1);
} }
set_header (1, "@0gDITTA@6g%5d", _codice_ditta); set_header (1, "@0gDITTA@6g%5ld", _codice_ditta);
set_header (1, "@12g%-45s", (const char*) _ragsoc); set_header (1, "@12g%-45s", (const char*) _ragsoc);
set_header (1, "@59g%-25s", (const char*) _indulc); set_header (1, "@59g%-25s", (const char*) _indulc);
set_header (1, "@86g%-9s", (const char*) _civulc); set_header (1, "@86g%-9s", (const char*) _civulc);
@ -1096,7 +1092,7 @@ void CG3200_application::crea_intestazione()
set_header (3, "@0gSottoconto@12g%d", _gruppo); set_header (3, "@0gSottoconto@12g%d", _gruppo);
set_header (3, "@16g%d", _conto); set_header (3, "@16g%d", _conto);
set_header (3, "@20g%d", _sottoc); set_header (3, "@20g%ld", _sottoc);
// conto(); // conto();
@ -1323,12 +1319,12 @@ void CG3200_application::calcola_progressivi()
saldi.put(SLD_CONTO, _conto); saldi.put(SLD_CONTO, _conto);
saldi.put(SLD_SOTTOCONTO, _sottoc); saldi.put(SLD_SOTTOCONTO, _sottoc);
for ( saldi.read(_isgteq);!saldi.eof();saldi.next(_testandlock)) for (saldi.read(_isgteq); saldi.good(); saldi.next())
{ {
if (saldi.eof()) break; if (saldi.curr() != record)
int annoes_saldi = saldi.curr().get_int(SLD_ANNOES); break;
if (saldi.curr() > record) break; int annoes_saldi = saldi.curr().get_int(SLD_ANNOES);
//Calcola i progressivi dell'esercizio attuale //Calcola i progressivi dell'esercizio attuale
@ -1385,7 +1381,9 @@ void CG3200_application::calcola_progressivi()
if ((_indbil == 1) || (_indbil == 2) || (_indbil == 5)) if ((_indbil == 1) || (_indbil == 2) || (_indbil == 5))
{ {
const TRecnotype pos = saldi.recno();
saldo = _sld.saldofin_esprec(_anno_corrente,_gruppo,_conto,_sottoc); saldo = _sld.saldofin_esprec(_anno_corrente,_gruppo,_conto,_sottoc);
saldi.readat(pos);
if (saldo> ZERO) if (saldo> ZERO)
{ {
@ -1463,7 +1461,7 @@ void CG3200_application::ricerca_clifo()
TString ragsoc,paiv,cofi,indcf,capcf,ptel,tel,statocf,comcf,dencom,provcom,dep; TString ragsoc,paiv,cofi,indcf,capcf,ptel,tel,statocf,comcf,dencom,provcom,dep;
TLocalisamfile clifo(LF_CLIFO); TLocalisamfile clifo(LF_CLIFO);
TLocalisamfile pconti(LF_PCON); TLocalisamfile pconti(LF_PCON);
TString dataini,datafine; TString16 dataini,datafine;
int numrivd; int numrivd;
clifo.setkey(1); clifo.setkey(1);
@ -1517,7 +1515,7 @@ void CG3200_application::ricerca_clifo()
set_header(3,"@27g%-30s",(const char*) descrizione_gruppo()); set_header(3,"@27g%-30s",(const char*) descrizione_gruppo());
set_header(3,"@59g%-30s",(const char*) descrizione_conto()); set_header(3,"@59g%-30s",(const char*) descrizione_conto());
set_header(3, "@91g%-30s",(const char*) ragsoc); set_header(3, "@91g%-30s",(const char*) ragsoc);
set_header(4, "@1gClasse@8g%s", (const char*) _lettivd); set_header(4, "Classe@8g%s", (const char*) _lettivd);
set_header(4, "@10g%-8s", (const char*) _numrivd); set_header(4, "@10g%-8s", (const char*) _numrivd);
if (_numivd != 0) if (_numivd != 0)
set_header(4, "@19g%2d", _numivd); set_header(4, "@19g%2d", _numivd);
@ -1532,7 +1530,6 @@ void CG3200_application::ricerca_clifo()
set_header (5, "@22g%s", (const char*) datafine); set_header (5, "@22g%s", (const char*) datafine);
} }
else else
if (_annomsk != 0)
{ {
set_header (5, "Periodo di competenza@23g%s", (const char*) dataini); set_header (5, "Periodo di competenza@23g%s", (const char*) dataini);
set_header (5, "@35g%s", (const char*) datafine); set_header (5, "@35g%s", (const char*) datafine);
@ -1604,7 +1601,6 @@ void CG3200_application::ricerca_gruppo()
set_header (5, "@24g%s", (const char*) datafine); set_header (5, "@24g%s", (const char*) datafine);
} }
else else
if (_annomsk != 0)
{ {
set_header (5, "Periodo di competenza@23g%s", (const char*) dataini); set_header (5, "Periodo di competenza@23g%s", (const char*) dataini);
set_header (5, "@35g%s", (const char*) datafine); set_header (5, "@35g%s", (const char*) datafine);

View File

@ -1,6 +1,6 @@
#include "cg3200.h" #include "cg3200.h"
PAGE "" -1 -1 78 20 PAGE "Stampa Mastrini" -1 -1 78 20
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
@ -474,9 +474,10 @@ BEGIN
ITEM "2|Due" ITEM "2|Due"
END END
BUTTON DLG_OK 9 2 BUTTON DLG_PRINT 9 2
BEGIN BEGIN
PROMPT -12 -1 "" PROMPT -12 -1 "~Stampa"
MESSAGE EXIT,K_ENTER
END END
BUTTON DLG_QUIT 9 2 BUTTON DLG_QUIT 9 2

View File

@ -1313,7 +1313,6 @@ print_action CG4400_application::postprocess_print(int file, int counter)
bool CG4400_application::set_print(int n) bool CG4400_application::set_print(int n)
{ {
TMask m("cg4400a"); TMask m("cg4400a");
int giorni_del_mese;
if (set_ditte(m)) if (set_ditte(m))
if (_selected.ones() > 0l) if (_selected.ones() > 0l)
@ -1344,19 +1343,14 @@ bool CG4400_application::set_print(int n)
_u_stampata = m.get_int(ULTIMA_PAGINA); _u_stampata = m.get_int(ULTIMA_PAGINA);
//set_page_number(_u_stampata + 1); //set_page_number(_u_stampata + 1);
} }
if (_fino_a_mese == 12)
giorni_del_mese = 31; const int giorni_del_mese = TDate::last_day(_fino_a_mese, _annoes);
else _data_a=TDate(giorni_del_mese,_fino_a_mese,_annoes);
{
TDate primo = format("01/%02d/%4d", _fino_a_mese+1, _annoes);
--primo;
giorni_del_mese = primo.day();
}
_data_a=format("%02d/%02d/%4d",giorni_del_mese,_fino_a_mese,_annoes);
// NB data_da viene letta nella preprocess_page // NB data_da viene letta nella preprocess_page
} }
if (_tipo_stampa == 2) if (_tipo_stampa == 2)
compila_lib(); compila_lib();
stampa_registri_IVA(m); stampa_registri_IVA(m);
} }
else warning_box("Nessuna ditta selezionata!"); else warning_box("Nessuna ditta selezionata!");

View File

@ -33,14 +33,27 @@ TBill::TBill(TToken_string& s, int from, int mode)
} }
const TBill& TBill::copy(const TBill& bill)
{
_tipo = bill._tipo;
_gruppo = bill._gruppo;
_conto = bill._conto;
_sottoconto = bill._sottoconto;
_descrizione = bill._descrizione;
_tipo_cr = bill._tipo_cr;
return *this;
}
// Certified 100% // Certified 100%
const TBill& TBill::set(int g, int c, long s, char t, const char* d) const TBill& TBill::set(int g, int c, long s, char t, const char* d, int r)
{ {
_tipo = (t > ' ') ? toupper(t) : ' '; _tipo = (t > ' ') ? toupper(t) : ' ';
_gruppo = g; _gruppo = g;
_conto = c; _conto = c;
_sottoconto = s; _sottoconto = s;
_descrizione = d; _descrizione = d;
_tipo_cr = r;
return *this; return *this;
} }
@ -133,6 +146,8 @@ const char* TBill::describe()
_gruppo = clifo.get_int("GRUPPO"); _gruppo = clifo.get_int("GRUPPO");
_conto = clifo.get_int("CONTO"); _conto = clifo.get_int("CONTO");
} }
if (_tipo_cr < 0)
_tipo_cr = 0;
} }
} }

View File

@ -22,15 +22,20 @@ protected:
virtual const char* class_name() const { return "Conto"; } virtual const char* class_name() const { return "Conto"; }
const char* describe(); const char* describe();
const TBill& copy(const TBill& b);
public: public:
TBill(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL) TBill(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL, int r = -1)
: _tipo(t), _gruppo(g), _conto(c), _sottoconto(s), _descrizione(d), _tipo_cr(-1) {} : _tipo(t), _gruppo(g), _conto(c), _sottoconto(s), _descrizione(d), _tipo_cr(r) {}
TBill(TToken_string& tgcsd, int from, int mode = 0); TBill(TToken_string& tgcsd, int from, int mode = 0);
TBill(const TBill& b) { copy(b); }
virtual ~TBill() {} virtual ~TBill() {}
const TBill& set(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL); const TBill& set(int g = 0, int c = 0, long s = 0L, char t = ' ',
const char* d = NULL, int r = -1);
const TBill& add_to(TToken_string& ts, int from, int mode = 0); const TBill& add_to(TToken_string& ts, int from, int mode = 0);
const TBill& operator=(const TBill& b) { return copy(b); }
virtual bool ok() const; // Gruppo, Conto e Sottoconto non nulli virtual bool ok() const; // Gruppo, Conto e Sottoconto non nulli
bool empty() const { return _gruppo==0 && _conto==0 && _sottoconto == 0; } bool empty() const { return _gruppo==0 && _conto==0 && _sottoconto == 0; }
@ -42,6 +47,8 @@ public:
const TString& descrizione(); const TString& descrizione();
int tipo_cr(); int tipo_cr();
void tipo_cr(int tcr) { _tipo_cr = tcr; }
int tipo_att(); int tipo_att();
bool read(TRectype& r); bool read(TRectype& r);