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

@ -16,7 +16,7 @@ BEGIN
PROMPT 3 1 "Ditta "
FLAGS "FRD"
USE LF_NDITTE KEY 1
CHECKTYPE REQUIRED
CHECKTYPE NORMAL
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
END

View File

@ -143,9 +143,15 @@ BEGIN
COPY OUTPUT F_DESCAGG
END
BOOLEAN F_SOLAIVA
BEGIN
PROMPT 1 7 "Movimento di sola IVA"
HELP "Indicare se non vi sono righe di contabilita'"
END
LIST F_PROVVISORIO 1 25
BEGIN
PROMPT 1 7 "Movimento provvisorio "
PROMPT 31 7 "Movimento provvisorio "
HELP "Indicare se si tratta di movimento provvisorio"
FIELD PROVVIS
ITEM " |No (movimento normale)"
@ -153,12 +159,6 @@ BEGIN
ITEM "N|Si (non cancellabile)"
END
BOOLEAN F_SOLAIVA
BEGIN
PROMPT 54 7 "Movimento di sola IVA"
HELP "Indicare se non vi sono righe di contabilita'"
END
STRING F_CODCAUS 3
BEGIN
PROMPT 1 8 "Causale "
@ -395,6 +395,7 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_CODPAG CODTAB
CHECKTYPE NORMAL
ADD RUN ba3 -6
WARNING "Codice pagamento assente"
END

View File

@ -546,6 +546,7 @@ 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)
@ -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())
if (oldconto.ok())
{
const TString80 d(cau.desc_agg(2));
oldpos = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), oldconto, d, 'I');
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;
}
}
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
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;
}
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;
}
@ -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,7 +1175,7 @@ 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;
@ -1168,7 +1185,7 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
{
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())
@ -1177,16 +1194,7 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
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));
}
}
app().causale().read(m.get(F_CODCAUS), dr.year());
TRegistro& reg = app().causale().reg();
const TString16 codreg(reg.name());
@ -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;
}
@ -152,6 +151,20 @@ bool TRegistro::read_att()
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

@ -8,7 +8,7 @@ END
STRING 108 5
BEGIN
PROMPT 2 2 ""
HELP "Codice della descrizione aggiuntiva di riga"
HELP "Codice della descrizione aggiuntiva della riga"
FLAGS "U"
USE %DPN
DISPLAY "Codice" CODTAB
@ -21,12 +21,12 @@ END
STRING 109 50
BEGIN
PROMPT 14 2 ""
USE %DPN
USE %DPN KEY 2
INPUT S0 109
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT 108
HELP "Descrizione aggiuntiva di riga"
HELP "Descrizione aggiuntiva della riga"
FIELD DESCR
END
@ -38,7 +38,7 @@ END
NUMBER 101 15
BEGIN
PROMPT 2 5 "Dare "
HELP "Importo dare del conto della riga"
HELP "Importo 'dare' del conto della riga"
FLAGS "RV"
PICTURE "."
END
@ -46,7 +46,7 @@ END
NUMBER 102 15
BEGIN
PROMPT 42 5 "Avere "
HELP "Importo avere del conto della riga"
HELP "Importo 'avere' del conto della riga"
FLAGS "RV"
PICTURE "."
END

View File

@ -115,7 +115,8 @@ bool TDeleteprovv_app::menu(MENU_TAG)
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";

View File

@ -6,8 +6,6 @@
#include <tabutil.h>
#include <utility.h>
#include <urldefid.h>
#include <array.h>
#include <lffiles.h>
#include <mov.h>
#include <rmov.h>
@ -1270,7 +1268,7 @@ print_action TListaMov_application::postprocess_page(int file,int count)
int r = 0;
for (int j = 0; j < _c.items(); j++)
{
TRigaiva& riga = (TRigaiva&)_c[j];
TRigaiva& riga = _c.riga(j);
//r = j+1;
r++;
set_row(r, "Imponibile@12g%15.0r", &riga._imponibile);

View File

@ -1,11 +1,9 @@
#include <mask.h>
#include <printapp.h>
#include <relation.h>
#include <tabutil.h>
#include <utility.h>
#include <sort.h>
#include <lffiles.h>
#include <clifo.h>
#include <pconti.h>
#include <mov.h>

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

@ -2,9 +2,6 @@
// 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)
@ -12,7 +9,7 @@ bool TRigaiva_array::add_riga(const real& imponibile, const real& imposta, const
bool found = FALSE;
for (int i = 0; i < items(); i++)
{
TRigaiva& r = (TRigaiva&)(*this)[i];
TRigaiva& r = riga(i);
if (r._codiva==codiva && tipodet==r._tipodet && tipocr==r._tipocr)
{
found = TRUE;
@ -35,7 +32,7 @@ bool TRiga_array::add_riga(const real& imponibile, const real& imposta, const ch
bool found = FALSE;
for (int i = 0; i < items(); i++)
{
TRiga& r = (TRiga&)(*this)[i];
TRiga& r = riga(i);
if (r._codiva==codiva && r._tipodoc==tipodoc)
{
found = TRUE;
@ -58,7 +55,7 @@ bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,cons
bool found = FALSE;
for (int i = 0; i < items(); i++)
{
TDociva& r = (TDociva&)(*this)[i];
TDociva& r = riga(i);
if (r._descrdoc==_descrdociva)
{
found = TRUE;

View File

@ -5,9 +5,13 @@
#ifndef __CGLIB03_H
#define __CGLIB03_H
#include <array.h>
#ifndef __REAL_H
#include <real.h>
#endif
#ifndef __STRINGS_H
#include <strings.h>
#endif
struct TDociva : public TObject
{
@ -23,6 +27,7 @@ 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
@ -40,6 +45,7 @@ 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
@ -55,6 +61,7 @@ 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
@ -70,6 +77,7 @@ 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