diff --git a/cg/cg2.cpp b/cg/cg2.cpp index 9281b892e..3eb883044 100755 --- a/cg/cg2.cpp +++ b/cg/cg2.cpp @@ -6,8 +6,6 @@ int main(int argc,char** argv) { - check_parameters(argc, argv); - const int n = (argc > 1) ? atoi(&argv[1][1]) : 0; switch(n) diff --git a/cg/cg2100.cpp b/cg/cg2100.cpp index 9b7548cb2..947bd8c27 100755 --- a/cg/cg2100.cpp +++ b/cg/cg2100.cpp @@ -148,10 +148,8 @@ bool TPrimanota_application::save_and_new() const bool TPrimanota_application::user_destroy() { - if (_msk[3] != NULL) delete _msk[3]; - if (_msk[2] != NULL) delete _msk[2]; - if (_msk[1] != NULL) delete _msk[1]; - if (_msk[0] != NULL) delete _msk[0]; + for (int m = 3; m >= 0; m--) + if (_msk[m] != NULL) delete _msk[m]; delete _rel; delete _nditte; @@ -165,6 +163,7 @@ bool TPrimanota_application::user_destroy() delete _caus; delete _tab; delete _tabcom; + return TRUE; } @@ -484,18 +483,18 @@ int TPrimanota_application::read(TMask& m) const TString16 occode(_rel->lfile().get("OCFPI")); occas_mask().set(O_CODICE, occode); - real cambio(_rel->lfile().get("CAMBIO")); - if (cambio < 1.0) cambio = 1.0; - m.set_exchange(FALSE, cambio); - - const char clifo = toupper(m.get(F_CLIFO)[0]); + const char clifo = _rel->lfile().get_char("TIPO"); if (_iva == iva_acquisti && clifo == 'C') error_box("Registrazione di acquisto attribuita ad un cliente"); else if (_iva == iva_vendite && clifo == 'F') 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.set_movprovv(_rel->lfile().get_bool("PROVVIS")); _saldi.set_movap(_causale.apertura()); @@ -573,7 +572,8 @@ int TPrimanota_application::read(TMask& m) if (to_swap) imposta = -imposta; 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; } riga.add(imposta.string()); // Imposta 104 @@ -668,6 +668,8 @@ void TPrimanota_application::mask2rel(const TMask& m) } else { + _rel->lfile().put("TIPO", clifo()); + int err = ~NOERR; if (m.get_bool(F_OCCASIONALE)) { diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index 47bfbb047..9b9053776 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -784,12 +784,12 @@ bool TPrimanota_application::iva_notify(int r, KEY k) if (oldpos >= 0) // Se il conto esisteva anche prima ... { // sottrai il vecchio imponibile 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 ... { // sottrai la vecchia imposta 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 @@ -1243,22 +1243,21 @@ void TPrimanota_application::add_cgs_tot(TMask& m) int conto = m.get_int(F_CONTOCLIFO); 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 - TBill bill; _causale.bill(1, bill); - if (conto == 0) - { - gruppo = bill.gruppo(); m.set(F_GRUPPOCLIFO, gruppo); - conto = bill.conto(); m.set(F_CONTOCLIFO, conto); - codice = bill.sottoconto(); + if (conto == 0 || causale().corrispettivi()) + { + // 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(); + conto = bill.conto(); + if (causale().corrispettivi()) + { + tipo = ' '; + codice = bill.sottoconto(); + } } - if (tipo == 'C' && causale().corrispettivi()) - { - codice = bill.sottoconto(); - tipo = ' '; - } - TBill nuovo(gruppo, conto, codice, tipo); + real tot(m.get(F_TOTALE)); const int pos = type2pos('T'); @@ -1267,7 +1266,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m) TSheet_field& ss = cgs(); TToken_string& row = ss.row(pos); 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) { diff --git a/cg/cg21iva.uml b/cg/cg21iva.uml index 6314d11dc..40421c623 100755 --- a/cg/cg21iva.uml +++ b/cg/cg21iva.uml @@ -17,6 +17,7 @@ BEGIN DISPLAY "Tipo" S1 OUTPUT 102 CODTAB OUTPUT 211 S0 + CHECKTYPE NORMAL WARNING "Codice IVA assente" VALIDATE REQIF_FUNC 1 101 END