Corretta cancellazione righe con importo nullo nelle righe contabili

git-svn-id: svn://10.65.10.50/trunk@566 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-11-08 12:47:54 +00:00
parent 251957f9c5
commit 02a6029dbe
4 changed files with 29 additions and 29 deletions

View File

@ -6,8 +6,6 @@
int main(int argc,char** argv) int main(int argc,char** argv)
{ {
check_parameters(argc, argv);
const int n = (argc > 1) ? atoi(&argv[1][1]) : 0; const int n = (argc > 1) ? atoi(&argv[1][1]) : 0;
switch(n) switch(n)

View File

@ -148,10 +148,8 @@ bool TPrimanota_application::save_and_new() const
bool TPrimanota_application::user_destroy() bool TPrimanota_application::user_destroy()
{ {
if (_msk[3] != NULL) delete _msk[3]; for (int m = 3; m >= 0; m--)
if (_msk[2] != NULL) delete _msk[2]; if (_msk[m] != NULL) delete _msk[m];
if (_msk[1] != NULL) delete _msk[1];
if (_msk[0] != NULL) delete _msk[0];
delete _rel; delete _rel;
delete _nditte; delete _nditte;
@ -165,6 +163,7 @@ bool TPrimanota_application::user_destroy()
delete _caus; delete _caus;
delete _tab; delete _tab;
delete _tabcom; delete _tabcom;
return TRUE; return TRUE;
} }
@ -484,18 +483,18 @@ int TPrimanota_application::read(TMask& m)
const TString16 occode(_rel->lfile().get("OCFPI")); const TString16 occode(_rel->lfile().get("OCFPI"));
occas_mask().set(O_CODICE, occode); occas_mask().set(O_CODICE, occode);
real cambio(_rel->lfile().get("CAMBIO")); const char clifo = _rel->lfile().get_char("TIPO");
if (cambio < 1.0) cambio = 1.0;
m.set_exchange(FALSE, cambio);
const char clifo = toupper(m.get(F_CLIFO)[0]);
if (_iva == iva_acquisti && clifo == 'C') if (_iva == iva_acquisti && clifo == 'C')
error_box("Registrazione di acquisto attribuita ad un cliente"); else error_box("Registrazione di acquisto attribuita ad un cliente"); else
if (_iva == iva_vendite && clifo == 'F') if (_iva == iva_vendite && clifo == 'F')
error_box("Registrazione di vendita attribuita ad un fornitore"); error_box("Registrazione di vendita attribuita ad un fornitore");
} }
// Inizializza cambio
real cambio(_rel->lfile().get("CAMBIO"));
if (cambio < 1.0) cambio = 1.0;
m.set_exchange(FALSE, cambio);
_saldi.reset(); // Azzera saldi _saldi.reset(); // Azzera saldi
_saldi.set_movprovv(_rel->lfile().get_bool("PROVVIS")); _saldi.set_movprovv(_rel->lfile().get_bool("PROVVIS"));
_saldi.set_movap(_causale.apertura()); _saldi.set_movap(_causale.apertura());
@ -573,7 +572,8 @@ int TPrimanota_application::read(TMask& m)
if (to_swap) imposta = -imposta; if (to_swap) imposta = -imposta;
if (imponibile.sign() * imposta.sign() < 0) if (imponibile.sign() * imposta.sign() < 0)
{ {
warning_box("Registrazione con imponibile e imposta discordi: correzione effettuata"); warning_box("Registrazione con imponibile e imposta con segni discordi:\n"
"assegnato il segno dell'imponibile");
imposta = -imposta; imposta = -imposta;
} }
riga.add(imposta.string()); // Imposta 104 riga.add(imposta.string()); // Imposta 104
@ -668,6 +668,8 @@ void TPrimanota_application::mask2rel(const TMask& m)
} }
else else
{ {
_rel->lfile().put("TIPO", clifo());
int err = ~NOERR; int err = ~NOERR;
if (m.get_bool(F_OCCASIONALE)) if (m.get_bool(F_OCCASIONALE))
{ {

View File

@ -784,12 +784,12 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
if (oldpos >= 0) // Se il conto esisteva anche prima ... if (oldpos >= 0) // Se il conto esisteva anche prima ...
{ // sottrai il vecchio imponibile { // sottrai il vecchio imponibile
const TImporto imp = app().sub_cgs_imp(oldpos, oldimp); const TImporto imp = app().sub_cgs_imp(oldpos, oldimp);
if (imp.is_zero) delimp = oldpos; if (imp.is_zero()) delimp = oldpos;
} }
if (oldposiva >= 0) // Se conto IVA esisteva anche prima ... if (oldposiva >= 0) // Se conto IVA esisteva anche prima ...
{ // sottrai la vecchia imposta { // sottrai la vecchia imposta
const TImporto imp = app().sub_cgs_imp(oldposiva, oldiva); const TImporto imp = app().sub_cgs_imp(oldposiva, oldiva);
if (imp.is_zero) deliva = oldposiva; if (imp.is_zero()) deliva = oldposiva;
} }
real imponibile(row.get(0)); // Nuovo imponibile real imponibile(row.get(0)); // Nuovo imponibile
@ -1243,22 +1243,21 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
int conto = m.get_int(F_CONTOCLIFO); int conto = m.get_int(F_CONTOCLIFO);
long codice = m.get_long(tipo == 'C' ? F_CLIENTE : F_FORNITORE); long codice = m.get_long(tipo == 'C' ? F_CLIENTE : F_FORNITORE);
// Se l'utente non ha ancora specificato un conto lo prendo dalla prima riga della causale if (conto == 0 || causale().corrispettivi())
TBill bill; _causale.bill(1, bill); {
if (conto == 0) // Se l'utente non ha ancora specificato un conto lo prendo dalla prima riga della causale
{ TBill bill; _causale.bill(1, bill);
gruppo = bill.gruppo(); m.set(F_GRUPPOCLIFO, gruppo); gruppo = bill.gruppo();
conto = bill.conto(); m.set(F_CONTOCLIFO, conto); conto = bill.conto();
codice = bill.sottoconto(); if (causale().corrispettivi())
{
tipo = ' ';
codice = bill.sottoconto();
}
} }
if (tipo == 'C' && causale().corrispettivi())
{
codice = bill.sottoconto();
tipo = ' ';
}
TBill nuovo(gruppo, conto, codice, tipo); TBill nuovo(gruppo, conto, codice, tipo);
real tot(m.get(F_TOTALE)); real tot(m.get(F_TOTALE));
const int pos = type2pos('T'); const int pos = type2pos('T');
@ -1267,7 +1266,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
TSheet_field& ss = cgs(); TSheet_field& ss = cgs();
TToken_string& row = ss.row(pos); TToken_string& row = ss.row(pos);
const TBill vecchio(row, 2, 0x1); const TBill vecchio(row, 2, 0x1);
if (vecchio.ok() && nuovo != vecchio) // Se cambio cliente/fornitore if (!vecchio.empty() && nuovo != vecchio) // Se cambio cliente/fornitore
{ {
for (int i = 0; i < ss.items(); i++) if (i != pos) for (int i = 0; i < ss.items(); i++) if (i != pos)
{ {

View File

@ -17,6 +17,7 @@ BEGIN
DISPLAY "Tipo" S1 DISPLAY "Tipo" S1
OUTPUT 102 CODTAB OUTPUT 102 CODTAB
OUTPUT 211 S0 OUTPUT 211 S0
CHECKTYPE NORMAL
WARNING "Codice IVA assente" WARNING "Codice IVA assente"
VALIDATE REQIF_FUNC 1 101 VALIDATE REQIF_FUNC 1 101
END END