Corretto allineamento tra ditta 770 e ditta contabile

git-svn-id: svn://10.65.10.50/branches/R_10_00@22743 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-10-26 08:35:30 +00:00
parent 54fad7d162
commit a6ab3a2677
8 changed files with 185 additions and 204 deletions

View File

@ -8,6 +8,8 @@
#include "rpag.h" #include "rpag.h"
#include "perc.h" #include "perc.h"
#include "../cg/cgsaldac.h" #include "../cg/cgsaldac.h"
#include <anagr.h>
#include <partite.h> #include <partite.h>
#include <scadenze.h> #include <scadenze.h>
#include <pagsca.h> #include <pagsca.h>
@ -49,9 +51,6 @@ const char* ITEMS_LA[] = {
"A|A", "B|B", "C|C", "D|D", "E|E", "F|F", "G|G", "H|H", "I|I", "L|L", "M|M", "A|A", "B|B", "C|C", "D|D", "E|E", "F|F", "G|G", "H|H", "I|I", "L|L", "M|M",
"N|N", "P|P", "Q|Q", "R|R", "S|S", "T|T", "U|U", "V|V", "W|W", "Z|Z", NULL }; "N|N", "P|P", "Q|Q", "R|R", "S|S", "T|T", "U|U", "V|V", "W|W", "Z|Z", NULL };
HIDDEN TString80 __tmp;
TSchedaPercipienti::TSchedaPercipienti(): _rel(NULL), _flag_cg(false) TSchedaPercipienti::TSchedaPercipienti(): _rel(NULL), _flag_cg(false)
{ {
_from_modify = false; _from_modify = false;
@ -151,7 +150,7 @@ TMask* TSchedaPercipienti::load_mask(int n)
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
// Handler versamenti // Handler versamenti
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
TSheet_field& vers = (TSheet_field&) m->field(F_VERSAMENTI); TSheet_field& vers = m->sfield(F_VERSAMENTI);
vers.set_notify(vers_notify); vers.set_notify(vers_notify);
vers.sheet_mask().set_handler(F_VERS_1015, vers1015_handler); vers.sheet_mask().set_handler(F_VERS_1015, vers1015_handler);
vers.sheet_mask().set_handler(DLG_SELPAG, pag_select); vers.sheet_mask().set_handler(DLG_SELPAG, pag_select);
@ -174,8 +173,8 @@ bool TSchedaPercipienti::setta_nprog(TMask& m, const bool variazione, const char
{ {
long nprog = 0L; long nprog = 0L;
const char tipoa = m.get(F_TIPOA)[0]; const char tipoa = m.get(F_TIPOA)[0];
TString8 codanagr(codanag ? codanag : m.get(F_CODANAGR)); const TString8 codanagr(codanag && *codanag ? codanag : m.get(F_CODANAGR));
const long codditta = app().tipo_coll()==nessuno ? get_firm_770() : app().get_firm(); const long codditta = get_firm_770();
// Scrivi nprog solo se il percipiente ESISTE sull'arkivio // Scrivi nprog solo se il percipiente ESISTE sull'arkivio
if (!app().esiste_perc(m, codanagr)) if (!app().esiste_perc(m, codanagr))
@ -189,7 +188,7 @@ bool TSchedaPercipienti::setta_nprog(TMask& m, const bool variazione, const char
if (numreg > 0L) if (numreg > 0L)
{ {
scperc.setkey(3); scperc.setkey(3);
scperc.put(SPR_CODDITTA, prefix().get_codditta()); scperc.put(SPR_CODDITTA, codditta);
scperc.put(SPR_NUMREG, numreg); scperc.put(SPR_NUMREG, numreg);
if (scperc.read(_isgteq) == NOERR && scperc.get_long(SPR_NUMREG) == numreg) if (scperc.read(_isgteq) == NOERR && scperc.get_long(SPR_NUMREG) == numreg)
@ -234,16 +233,10 @@ bool TSchedaPercipienti::setta_nprog(TMask& m, const bool variazione, const char
bool TSchedaPercipienti::codditta_handler(TMask_field& f, KEY k) bool TSchedaPercipienti::codditta_handler(TMask_field& f, KEY k)
{ {
if (k == K_TAB && !(f.mask().is_running()) ) if (k == K_TAB && !f.mask().is_running())
{ {
TString16 codditta; const long codditta = get_firm_770();
// Se chiamata dalla contabilita' prendo ditta con get_firm if (codditta > 0)
if (app().tipo_coll() == nessuno)
codditta << get_firm_770();
else
codditta << app().get_firm();
if (codditta != "0")
{ {
f.set(codditta); f.set(codditta);
f.check(); f.check();
@ -259,7 +252,7 @@ bool TSchedaPercipienti::codanagr_handler(TMask_field& f, KEY k)
TMask& m = f.mask(); TMask& m = f.mask();
const bool variazione = app().coll_variazione(); const bool variazione = app().coll_variazione();
TString8 codanagr(f.get()); TString8 codanagr(f.get());
if (codanagr.not_empty()) if (codanagr.full())
{ {
if (!app().esiste_perc(m, codanagr)) if (!app().esiste_perc(m, codanagr))
return f.warning_box("Percipiente non valido"); return f.warning_box("Percipiente non valido");
@ -267,9 +260,9 @@ bool TSchedaPercipienti::codanagr_handler(TMask_field& f, KEY k)
} }
// faccio a mano decodifica del percipiente // faccio a mano decodifica del percipiente
// perchè l'automatismo non funziona // perchè l'automatismo non funziona
long tmp_codanagr = atol(codanagr); const long tmp_codanagr = atol(codanagr);
TString4 tmp_tipoa = m.get(F_TIPOA); const TString4 tmp_tipoa = m.get(F_TIPOA);
TString80 tmp_ragsoc = app().get_ragsoc(tmp_tipoa, tmp_codanagr); const TString& tmp_ragsoc = app().get_ragsoc(tmp_tipoa, tmp_codanagr);
m.set(F_RAGSOCPER, tmp_ragsoc); m.set(F_RAGSOCPER, tmp_ragsoc);
m.set(F_RAGSOCCOM, tmp_ragsoc); m.set(F_RAGSOCCOM, tmp_ragsoc);
} }
@ -520,9 +513,8 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch)
bool schede(const TRelation& rel, void* pJolly) bool schede(const TRelation& rel, void* pJolly)
{ {
const TRectype & sch = rel.lfile().curr(); const TRectype& sch = rel.curr();
TSchedaPercipienti * schper = (TSchedaPercipienti *) pJolly; TSchedaPercipienti* schper = (TSchedaPercipienti *) pJolly;
schper->agg_pagamenti(sch); schper->agg_pagamenti(sch);
return true; return true;
} }
@ -532,36 +524,29 @@ bool TSchedaPercipienti::aggpag_handler(TMask_field& f, KEY k)
if (k == K_SPACE) if (k == K_SPACE)
{ {
TLocalisamfile fsch(LF_SCPERC); TLocalisamfile fsch(LF_SCPERC);
TRectype from(fsch.curr()); TRectype from(LF_SCPERC);
TLocalisamfile mov(LF_MOV); from.put("CODDITTA", get_firm_770());
TRelation rel(LF_SCPERC);
from.put("CODDITTA", prefix().get_codditta()); TCursor c(&rel, "", 1, &from, &from);
c.scan(schede, &app(), TR("Aggiornamento schede"));
TRectype to(from);
TCursor c(new TRelation(LF_SCPERC), "", 1, &from, &to);
c.scan(schede, &app(), "Aggiornamento schede");
} }
return true; return true;
} }
bool TSchedaPercipienti::esiste_perc(TMask& m, const char* codanag) bool TSchedaPercipienti::esiste_perc(const TMask& m, const char* codanag)
{ {
const char tipoa = m.get(F_TIPOA)[0]; const char tipoa = m.get(F_TIPOA)[0];
TString16 codanagr(codanag ? codanag : m.get(F_CODANAGR)); const TString8 codanagr(codanag && *codanag ? codanag : m.get(F_CODANAGR));
// Controllo che l'anagrafica esista // Controllo che l'anagrafica esista
TLocalisamfile anag(LF_ANAG); TString8 key; key.format("%c|%ld", tipoa, atol(codanagr));
anag.zero(); const TRectype& anag = cache().get(LF_ANAG, key);
anag.put("TIPOA", tipoa); const bool esiste_anagr = !anag.empty();
anag.put("CODANAGR", codanagr);
const bool esiste_anagr = anag.read() == NOERR;
// memorizzo flag soggetto non residente nel dato membro usato // memorizzo flag soggetto non residente nel dato membro usato
// nei controlli // nei controlli
if (esiste_anagr) if (esiste_anagr)
_soggnres = anag.get_bool("SOGGNRES"); _soggnres = anag.get_bool(ANA_SOGGNRES);
return esiste_anagr; return esiste_anagr;
} }
@ -585,7 +570,7 @@ bool TSchedaPercipienti::nprog_handler(TMask_field& f, KEY key)
{ {
app()._flag_cg = FALSE; // avoid recursion app()._flag_cg = FALSE; // avoid recursion
if (nprog==0 || !app().esiste_perc(f.mask())) if (nprog==0 || !app().esiste_perc(f.mask()))
return FALSE; return false;
} }
return TRUE; return TRUE;
} }
@ -635,16 +620,20 @@ bool TSchedaPercipienti::user_create()
if ( !_coll.read(msg->body()) ) if ( !_coll.read(msg->body()) )
{ {
NFCHECK("Errore nei parametri passati"); NFCHECK("Errore nei parametri passati");
return FALSE; return false;
} }
const long ditta_cg = get_firm(); const long ditta = get_firm_770();
if (!exist_dichiar_770(ditta_cg)) if (!exist_dichiar_770(ditta))
if (yesno_box(FR("Creare la dichiarazione per la ditta %ld"), ditta_cg)) {
if (!enter_dichiar_770(ditta_cg)) if (yesno_box(FR("Creare la dichiarazione per la ditta %ld"), ditta))
{
if (!enter_dichiar_770(ditta))
{ {
NFCHECK("Creazione dichiarazione fallita!"); NFCHECK("Creazione dichiarazione fallita!");
return FALSE; return false;
}
}
} }
} }
@ -699,17 +688,10 @@ bool TSchedaPercipienti::coll_variazione() const
tipo_coll() == pagamento_piu_perc; tipo_coll() == pagamento_piu_perc;
} }
TString80 TSchedaPercipienti::get_ragsoc(const char* tipoa, const long codanagr) const TString& TSchedaPercipienti::get_ragsoc(const char* tipoa, const long codanagr) const
{ {
TLocalisamfile anag(LF_ANAG); TString8 key; key.format("%c|%ld", *tipoa, codanagr);
anag.zero(); return cache().get(LF_ANAG, key, ANA_RAGSOC);
anag.setkey(1);
anag.put("TIPOA", tipoa);
anag.put("CODANAGR", codanagr);
const int rc = anag.read();
if (rc != NOERR)
anag.zero();
return anag.get("RAGSOC");
} }
void TSchedaPercipienti::init_modify_mode(TMask& m) void TSchedaPercipienti::init_modify_mode(TMask& m)
@ -1325,10 +1307,8 @@ void TSchedaPercipienti::mask2rel(const TMask& m)
TMask& TSchedaPercipienti::TheMask() const TMask& TSchedaPercipienti::TheMask() const
{ {
if (_msk[1] == NULL) CHECK(_msk[1] != NULL, "Maschera di inserimento/modifica non ancora istanziata!");
error_box("Maschera di inserimento/modifica non ancora istanziata!"); return *_msk[1];
return *(_msk[1]);
} }
TSheet_field& TSchedaPercipienti::pag_sheet_enabled(TMask& m, bool force_enable) const TSheet_field& TSchedaPercipienti::pag_sheet_enabled(TMask& m, bool force_enable) const
@ -1336,10 +1316,10 @@ TSheet_field& TSchedaPercipienti::pag_sheet_enabled(TMask& m, bool force_enable)
TSheet_field* s = NULL; TSheet_field* s = NULL;
// istanza reference sheet a disposizione // istanza reference sheet a disposizione
TSheet_field& s_C = (TSheet_field&)m.field(F_PAGAMENTI_C); TSheet_field& s_C = m.sfield(F_PAGAMENTI_C);
TSheet_field& s_E = (TSheet_field&)m.field(F_PAGAMENTI_C); TSheet_field& s_E = m.sfield(F_PAGAMENTI_C);
TSheet_field& s_F = (TSheet_field&)m.field(F_PAGAMENTI_D); TSheet_field& s_F = m.sfield(F_PAGAMENTI_D);
TSheet_field& s_G = (TSheet_field&)m.field(F_PAGAMENTI_D); TSheet_field& s_G = m.sfield(F_PAGAMENTI_D);
// forza la disabilitazione di tutti se richiesta // forza la disabilitazione di tutti se richiesta
// l'abilitazionein base al quadro // l'abilitazionein base al quadro
@ -2116,13 +2096,13 @@ Pag_struct& TSchedaPercipienti::calcola_riga_pag(Pag_struct& s,
clear_struct(c); clear_struct(c);
// calcolo CPA // calcolo CPA
c.impcpa = (s.compenso * h_PercCassaPrev) / (100.00 + h_PercCassaPrev); c.impcpa = (s.compenso * h_PercCassaPrev) / (CENTO + h_PercCassaPrev);
c.impcpa.round(fdec); c.impcpa.round(fdec);
if (s.impcpa == ZERO || force) if (s.impcpa == ZERO || force)
s.impcpa = c.impcpa; s.impcpa = c.impcpa;
// calcolo imponibile // calcolo imponibile
c.imponibile = ((s.compenso - s.impcpa) * h_PercAssImp) / 100.00; c.imponibile = ((s.compenso - s.impcpa) * h_PercAssImp) / CENTO;
c.imponibile.round(fdec); c.imponibile.round(fdec);
if (s.imponibile == ZERO || force) if (s.imponibile == ZERO || force)
s.imponibile = c.imponibile; s.imponibile = c.imponibile;
@ -2132,7 +2112,7 @@ Pag_struct& TSchedaPercipienti::calcola_riga_pag(Pag_struct& s,
s.perc = h_PercRitenuta; s.perc = h_PercRitenuta;
// calcolo ritenuta lorda // calcolo ritenuta lorda
c.ritlorda = (s.imponibile * s.perc) / 100.00; c.ritlorda = (s.imponibile * s.perc) / CENTO;
c.ritlorda.round(fdec); c.ritlorda.round(fdec);
s.ritlorda = c.ritlorda; s.ritlorda = c.ritlorda;
@ -2152,16 +2132,16 @@ Pag_struct& TSchedaPercipienti::calcola_riga_pag(Pag_struct& s,
s.alqimp10 = h_PercAssImpInps; s.alqimp10 = h_PercAssImpInps;
// calcolo contributo Inps complessivo // calcolo contributo Inps complessivo
c.ctssncomp = (((s.compenso * s.alqimp10) / 100.00) * h_PercInps) / 100.00; c.ctssncomp = (((s.compenso * s.alqimp10) / CENTO) * h_PercInps) / CENTO;
c.ctssncomp.round(fdec); c.ctssncomp.round(fdec);
if (s.ctssncomp == ZERO || force) if (s.ctssncomp == ZERO || force)
s.ctssncomp = c.ctssncomp; s.ctssncomp = c.ctssncomp;
// calcolo contributo Inps del percipiente // calcolo contributo Inps del percipiente
if (h_PercCommitInps <= ZERO) if (h_PercCommitInps <= ZERO)
c.ctssnperc = s.ctssncomp - ((s.ctssncomp * 2) / 3); c.ctssnperc = s.ctssncomp - (s.ctssncomp * 2.0 / 3.0);
else else
c.ctssnperc = s.ctssncomp - ((s.ctssncomp * h_PercCommitInps) / CENTO); c.ctssnperc = s.ctssncomp - (s.ctssncomp * h_PercCommitInps / CENTO);
c.ctssnperc.round(fdec); c.ctssnperc.round(fdec);
if (s.ctssnperc == ZERO || force) if (s.ctssnperc == ZERO || force)
s.ctssnperc = c.ctssnperc; s.ctssnperc = c.ctssnperc;
@ -2171,7 +2151,7 @@ Pag_struct& TSchedaPercipienti::calcola_riga_pag(Pag_struct& s,
s.utpagati = s.imponibile; s.utpagati = s.imponibile;
// calcolo ritenute utili pagati // calcolo ritenute utili pagati
c.ritutpag = (s.utpagati * s.perc) / 100.00; c.ritutpag = s.utpagati * s.perc / CENTO;
c.ritutpag.round(fdec); c.ritutpag.round(fdec);
if (s.ritutpag == ZERO || force) if (s.ritutpag == ZERO || force)
s.ritutpag = c.ritutpag; s.ritutpag = c.ritutpag;
@ -2327,6 +2307,6 @@ void TSchedaPercipienti::build_causqua_items(TMask& m, const TString& quadro) co
int SchedaPerc (int argc, char* argv[]) int SchedaPerc (int argc, char* argv[])
{ {
TSchedaPercipienti a; TSchedaPercipienti a;
a.run(argc, argv, "Scheda Percipienti"); a.run(argc, argv, TR("Scheda Percipienti"));
return 0; return 0;
} }

View File

@ -19,6 +19,8 @@
#define F_RAGSOCCOM 208 #define F_RAGSOCCOM 208
#define F_RAGSOCPER 209 #define F_RAGSOCPER 209
#define F_AGGPAG 210 #define F_AGGPAG 210
#define F_COFI 211
#define F_COFICOM 212
// m70100b // m70100b
#define F_RAGSOC2 300 #define F_RAGSOC2 300

View File

@ -15,7 +15,7 @@ END
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
BEGIN BEGIN
PROMPT 3 1 "Ditta " PROMPT 3 1 "Ditta "
FLAGS "DFGP" FLAGS "DGP"
KEY 1 KEY 1
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
USE LF_NDITTE KEY 1 USE LF_NDITTE KEY 1
@ -36,14 +36,14 @@ BEGIN
FLAGS "DRP" FLAGS "DRP"
END END
TEXT DLG_NULL GROUPBOX DLG_NULL 78 4
BEGIN BEGIN
PROMPT 1 7 "@bDati percipiente" PROMPT 1 7 "@bDati percipiente"
END END
LIST F_TIPOA 1 9 LIST F_TIPOA 1 9
BEGIN BEGIN
PROMPT 1 8 "" PROMPT 2 8 ""
ITEM "F|Fisica" ITEM "F|Fisica"
ITEM "G|Giuridica" ITEM "G|Giuridica"
KEY 1 KEY 1
@ -61,7 +61,7 @@ END
NUMBER F_CODANAGRPERC 5 NUMBER F_CODANAGRPERC 5
BEGIN BEGIN
PROMPT 15 8 "" PROMPT 16 8 ""
USE LF_PERC USE LF_PERC
JOIN LF_ANAG INTO TIPOA=TIPOA CODANAGR=CODANAGR JOIN LF_ANAG INTO TIPOA=TIPOA CODANAGR=CODANAGR
INPUT CODDITTA F_CODDITTA SELECT INPUT CODDITTA F_CODDITTA SELECT
@ -70,8 +70,11 @@ BEGIN
DISPLAY "Tipo " TIPOA DISPLAY "Tipo " TIPOA
DISPLAY "Codice " CODANAGR DISPLAY "Codice " CODANAGR
DISPLAY "Denominazione@50" LF_ANAG->RAGSOC DISPLAY "Denominazione@50" LF_ANAG->RAGSOC
DISPLAY "Codice Fiscale" LF_ANAG->COFI
DISPLAY "Ditta" CODDITTA
OUTPUT F_CODANAGRPERC CODANAGR OUTPUT F_CODANAGRPERC CODANAGR
OUTPUT F_RAGSOCPER LF_ANAG->RAGSOC OUTPUT F_RAGSOCPER LF_ANAG->RAGSOC
OUTPUT F_COFI LF_ANAG->COFI
MESSAGE COPY, F_CODANAGR MESSAGE COPY, F_CODANAGR
ADD RUN 775 -0 ADD RUN 775 -0
GROUP 2 GROUP 2
@ -79,16 +82,20 @@ END
NUMBER F_CODANAGRCOM 5 NUMBER F_CODANAGRCOM 5
BEGIN BEGIN
PROMPT 15 8 "" PROMPT 16 8 ""
USE LF_ANAG USE LF_ANAG SELECT LF_PERC->CODDITTA!=#F_CODDITTA
JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR
INPUT TIPOA F_TIPOA SELECT INPUT TIPOA F_TIPOA SELECT
INPUT CODANAGR F_CODANAGRCOM INPUT CODANAGR F_CODANAGRCOM
DISPLAY "Tipo" TIPOA DISPLAY "Tipo" TIPOA
DISPLAY "Codice" CODANAGR DISPLAY "Codice" CODANAGR
DISPLAY "Denominazione@50" RAGSOC DISPLAY "Denominazione@50" RAGSOC
DISPLAY "Codice Fiscale" COFI
DISPLAY "Ditta" LF_PERC->CODDITTA
OUTPUT F_TIPOA TIPOA OUTPUT F_TIPOA TIPOA
OUTPUT F_CODANAGRCOM CODANAGR OUTPUT F_CODANAGRCOM CODANAGR
OUTPUT F_RAGSOCCOM RAGSOC OUTPUT F_RAGSOCCOM RAGSOC
OUTPUT F_COFICOM COFI
MESSAGE COPY, F_CODANAGR MESSAGE COPY, F_CODANAGR
ADD RUN BA4 -1 ADD RUN BA4 -1
FLAGS "H" FLAGS "H"
@ -98,24 +105,26 @@ END
STRING F_RAGSOCCOM 50 STRING F_RAGSOCCOM 50
BEGIN BEGIN
PROMPT 25 8 "" PROMPT 25 8 ""
USE LF_ANAG KEY 2 USE LF_ANAG KEY 2 SELECT LF_PERC->CODDITTA!=#F_CODDITTA
JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR
INPUT TIPOA F_TIPOA SELECT INPUT TIPOA F_TIPOA SELECT
INPUT RAGSOC F_RAGSOCCOM INPUT RAGSOC F_RAGSOCCOM
DISPLAY "Denominazione@50" RAGSOC DISPLAY "Denominazione@50" RAGSOC
DISPLAY "Tipo" TIPOA DISPLAY "Tipo" TIPOA
DISPLAY "Codice" CODANAGR DISPLAY "Codice" CODANAGR
DISPLAY "Percipiente" LF_PERC->CODANAGR DISPLAY "Codice Fiscale" COFI
DISPLAY "Ditta" LF_PERC->CODDITTA
COPY OUTPUT F_CODANAGRCOM COPY OUTPUT F_CODANAGRCOM
ADD RUN BA4 -1 ADD RUN BA4 -1
MESSAGE COPY, F_RAGSOCPER MESSAGE COPY, F_RAGSOCPER
GROUP 1 GROUP 1
FLAGS "H"
END END
STRING F_RAGSOCPER 50 STRING F_RAGSOCPER 50
BEGIN BEGIN
PROMPT 25 8 "" PROMPT 25 8 ""
USE LF_ANAG KEY 2 SELECT LF_PERC->CODANAGR!="" USE LF_ANAG KEY 2 SELECT LF_PERC->CODDITTA==#F_CODDITTA
JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR
INPUT TIPOA F_TIPOA SELECT INPUT TIPOA F_TIPOA SELECT
INPUT RAGSOC F_RAGSOCPER INPUT RAGSOC F_RAGSOCPER
@ -125,9 +134,46 @@ BEGIN
GROUP 2 GROUP 2
END END
STRING F_COFI 16
BEGIN
PROMPT 2 9 "Codice Fiscale"
USE LF_ANAG KEY 3 SELECT LF_PERC->CODDITTA==#F_CODDITTA
JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR
INPUT TIPOA F_TIPOA SELECT
INPUT COFI F_COFI
DISPLAY "Tipo" TIPOA
DISPLAY "Codice Fiscale" COFI
DISPLAY "Codice" CODANAGR
DISPLAY "Denominazione@50" RAGSOC
DISPLAY "Ditta" LF_PERC->CODDITTA
OUTPUT F_COFI COFI
OUTPUT F_CODANAGRCOM CODANAGR
OUTPUT F_RAGSOCCOM RAGSOC
OUTPUT F_CODANAGR CODANAGR
ADD RUN BA4 -1
GROUP 2
END
STRING F_COFICOM 16
BEGIN
PROMPT 2 9 "Codice Fiscale"
USE LF_ANAG KEY 3 SELECT LF_PERC->CODDITTA!=#F_CODDITTA
JOIN LF_PERC INTO CODDITTA=#F_CODDITTA TIPOA=TIPOA CODANAGR==CODANAGR
INPUT TIPOA F_TIPOA SELECT
INPUT COFI F_COFICOM
COPY DISPLAY F_COFI
OUTPUT F_COFI COFICOM
OUTPUT F_CODANAGRCOM CODANAGR
OUTPUT F_RAGSOCCOM RAGSOC
OUTPUT F_CODANAGR CODANAGR
ADD RUN BA4 -1
GROUP 1
END
NUMBER F_NPROG 6 NUMBER F_NPROG 6
BEGIN BEGIN
PROMPT 1 10 "@bScheda numero " PROMPT 1 11 "@bScheda numero "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
KEY 1 KEY 1
FIELD LF_SCPERC->NPROG FIELD LF_SCPERC->NPROG

View File

@ -65,7 +65,7 @@ class TSchedaPercipienti : public TRelation_application
real _tot_vers, _tot_rit; real _tot_vers, _tot_rit;
private: private:
TString80 get_ragsoc(const char* tipoa, const long codanagr); const TString& get_ragsoc(const char* tipoa, const long codanagr) const;
static void work_tipoluogo(TMask_field& f); static void work_tipoluogo(TMask_field& f);
// controlla che il versamento abbia collegato almeno un pagamento // controlla che il versamento abbia collegato almeno un pagamento
@ -206,7 +206,7 @@ class TSchedaPercipienti : public TRelation_application
bool coll_variazione() const; bool coll_variazione() const;
bool coll_datanum() const { return _coll._datadoc.not_empty() && _coll._numdoc.not_empty(); } bool coll_datanum() const { return _coll._datadoc.not_empty() && _coll._numdoc.not_empty(); }
long coll_numreg() const { return _coll._numreg; } long coll_numreg() const { return _coll._numreg; }
bool esiste_perc(TMask& m, const char* coda=NULL); bool esiste_perc(const TMask& m, const char* coda=NULL);
void agg_pagamenti(const TRectype & sch); void agg_pagamenti(const TRectype & sch);
TSheet_field& pags() const; TSheet_field& pags() const;

View File

@ -68,12 +68,9 @@ class TVersa_rit : public TSkeleton_application
TCursor* TVersa_rit::meik_curs(TRelation* rel) TCursor* TVersa_rit::meik_curs(TRelation* rel)
{ {
TString16 filt; const long codditta = get_firm_770();
TCursor* cur; TString16 filt; filt.format("CODDITTA=%ld", codditta);
const long codditta = get_firm(); return new TCursor(rel, filt);
filt.format("CODDITTA=%ld", codditta);
cur = new TCursor(rel, filt);
return cur;
} }
bool TVersa_rit::create() bool TVersa_rit::create()
@ -466,7 +463,7 @@ bool TVersa_rit::do_all()
return FALSE; return FALSE;
const long selected = _sheet_perc->selected(); const long selected = _sheet_perc->selected();
const long codditta = get_firm(); const long codditta = get_firm_770();
build_schede_sheet(codditta); build_schede_sheet(codditta);
@ -529,7 +526,7 @@ bool TVersa_rit::do_all()
void TVersa_rit::attach_pag_vers(TToken_string& r, real& disponibile, bool is_last) void TVersa_rit::attach_pag_vers(TToken_string& r, real& disponibile, bool is_last)
{ {
const long codditta = get_firm(); const long codditta = get_firm_770();
const char tipoa = r.get_char(1); const char tipoa = r.get_char(1);
const long codanagr = r.get_long(2); const long codanagr = r.get_long(2);
const int nprog = r.get_int(3); const int nprog = r.get_int(3);
@ -726,7 +723,7 @@ void TVersa_rit::main_loop()
int collega_vers_rit(int argc, char* argv[]) int collega_vers_rit(int argc, char* argv[])
{ {
TVersa_rit a; TVersa_rit a;
a.run(argc, argv, "Versamento ritenute"); a.run(argc, argv, TR("Versamento ritenute"));
return 0; return 0;
} }

View File

@ -30,7 +30,7 @@ class TManutenzione_quadri : public TSkeleton_application
TLocalisamfile* _base, *_basebis; TLocalisamfile* _base, *_basebis;
int _anno_dic; int _anno_dic;
bool _soci; bool _soci;
long _codditta, _coddic; long _coddic;
TString _qcomp_prev; TString _qcomp_prev;
protected: protected:
@ -61,7 +61,6 @@ class TManutenzione_quadri : public TSkeleton_application
public: public:
TManutenzione_quadri (); TManutenzione_quadri ();
~TManutenzione_quadri() {};
virtual bool firm_change_enabled() const; virtual bool firm_change_enabled() const;
}; };
@ -93,14 +92,11 @@ bool TManutenzione_quadri::filtra_ditte(const TRelation * r)
void TManutenzione_quadri::on_config_change() void TManutenzione_quadri::on_config_change()
{ {
TConfig conf(CONFIG_STUDIO); _anno_dic = ini_get_int(CONFIG_STUDIO, "77", ANNO_SEL, TDate(TODAY).year());
_anno_dic = (int)conf.get_long(ANNO_SEL, NULL, -1, TDate(TODAY).year());
} }
bool TManutenzione_quadri::firm_change_enabled() const bool TManutenzione_quadri::firm_change_enabled() const
{ { return false; }
return FALSE;
}
// Lancia la gestione soci passando la ditta // Lancia la gestione soci passando la ditta
bool TManutenzione_quadri::exec_soci(TMask_field& f, KEY k) bool TManutenzione_quadri::exec_soci(TMask_field& f, KEY k)
@ -109,7 +105,7 @@ bool TManutenzione_quadri::exec_soci(TMask_field& f, KEY k)
{ {
TString appname("ba4 -5"); TString appname("ba4 -5");
TString body(16); TString body(16);
const long ditta = app()._codditta; const long ditta = get_firm_770();
body << FLD_SC1_CODDITTA << "|"; body << FLD_SC1_CODDITTA << "|";
body << FLD_SC1_CODDITTA << "="; body << FLD_SC1_CODDITTA << "=";
body << ditta; body << ditta;
@ -128,15 +124,9 @@ bool TManutenzione_quadri::codditta_handler(TMask_field& f, KEY k)
{ {
if (k == K_TAB && !(f.mask().is_running()) ) if (k == K_TAB && !(f.mask().is_running()) )
{ {
TString16 codditta; f.set(get_firm_770());
app()._codditta = get_firm_770();
codditta << app()._codditta;
if (codditta != "0")
{
f.set(codditta);
f.check(); f.check();
} }
}
if (f.to_check(k)) if (f.to_check(k))
{ {
@ -147,7 +137,8 @@ bool TManutenzione_quadri::codditta_handler(TMask_field& f, KEY k)
else else
set_firm_770(codditta); set_firm_770(codditta);
} }
return TRUE;
return true;
} }
TMask* TManutenzione_quadri::load_mask(int n) TMask* TManutenzione_quadri::load_mask(int n)
@ -348,13 +339,13 @@ void TManutenzione_quadri::init_menu(TMask& m)
{ {
m.set(F_ANNODIC, _anno_dic); m.set(F_ANNODIC, _anno_dic);
_codditta = _msk[0]->get_long(F_CODDITTA); const long codditta = _msk[0]->get_long(F_CODDITTA);
TString80 ragsoc(_msk[0]->get(F_RAGDITTA)); TString80 ragsoc(_msk[0]->get(F_RAGDITTA));
m.set(F_CODDITTA, _codditta); m.set(F_CODDITTA, codditta);
m.set(F_RAGDITTA, ragsoc); m.set(F_RAGDITTA, ragsoc);
// Se persona giuridica c'e' la voce "Amministratori" // Se persona giuridica c'e' la voce "Amministratori"
_soci = tipo_persona(_codditta) == 'G'; _soci = tipo_persona(codditta) == 'G';
m.enable(DLG_MANUTENZ_SOCI, _soci); m.enable(DLG_MANUTENZ_SOCI, _soci);
m.set_handler(DLG_MANUTENZ_SOCI, exec_soci); m.set_handler(DLG_MANUTENZ_SOCI, exec_soci);
@ -368,7 +359,7 @@ void TManutenzione_quadri::init_menu(TMask& m)
m.set_handler(DLG_STOPREC_STQD,show_menu); m.set_handler(DLG_STOPREC_STQD,show_menu);
// Se non e' un dichiarante disabilita la corrispondente voce // Se non e' un dichiarante disabilita la corrispondente voce
m.enable(DLG_STOPREC_SD, sogg_dic(_codditta)); m.enable(DLG_STOPREC_SD, sogg_dic(codditta));
// Evidenzia i quadri compilati o inibiti // Evidenzia i quadri compilati o inibiti
TString qcomp(NUM_QUADRI), qric(NUM_QUADRI); TString qcomp(NUM_QUADRI), qric(NUM_QUADRI);
@ -376,7 +367,7 @@ void TManutenzione_quadri::init_menu(TMask& m)
// 1.5 // 1.5
_basebis->setkey(1); _basebis->setkey(1);
_basebis->zero(); _basebis->zero();
_basebis->put("CODDITTA", _codditta); _basebis->put("CODDITTA", codditta);
int rt = _basebis->read(); int rt = _basebis->read();
qcomp = _basebis->get("QCOMP"); qcomp = _basebis->get("QCOMP");
qric = _basebis->get("QSUPPRIC"); qric = _basebis->get("QSUPPRIC");
@ -394,7 +385,7 @@ bool TManutenzione_quadri::lock(const bool lok)
base.setkey(1); base.setkey(1);
base.zero(); base.zero();
base.put("CODDITTA", _codditta); base.put("CODDITTA", get_firm_770());
const int rt = base.read(_isequal, _testandlock); const int rt = base.read(_isequal, _testandlock);
if (rt != NOERR) if (rt != NOERR)
return error_box("Impossibile leggere i dati: errore %d", rt); return error_box("Impossibile leggere i dati: errore %d", rt);
@ -512,15 +503,13 @@ bool TManutenzione_quadri::query_mask()
load_mask(0); load_mask(0);
init_query_mask(*_msk[0]); init_query_mask(*_msk[0]);
_msk[0]->first_focus(DLG_OK); _msk[0]->first_focus(DLG_OK);
KEY ch = _msk[0]->run(); const KEY ch = _msk[0]->run();
if (ch == K_ENTER)
_codditta = _msk[0]->get_long(F_CODDITTA);
return ch == K_ENTER; return ch == K_ENTER;
} }
int MenuQuadri (int argc, char* argv[]) int MenuQuadri (int argc, char* argv[])
{ {
TManutenzione_quadri a; TManutenzione_quadri a;
a.run(argc, argv, "Gestione percipienti"); a.run(argc, argv, TR("Gestione percipienti"));
return 0; return 0;
} }

View File

@ -1,9 +1,12 @@
// 77lib01.cpp // 77lib01.cpp
#include <dongle.h>
#include <tabutil.h> #include <tabutil.h>
#include <relation.h> #include <relation.h>
#include <recarray.h>
#include <anagr.h> #include <anagr.h>
#include <comuni.h> #include <comuni.h>
#include <nditte.h>
#include "scperc.h" #include "scperc.h"
#include "perc.h" #include "perc.h"
@ -73,20 +76,12 @@ const char* cod_fis(const long codditta)
anagr.put(ANA_CODANAGR,(long)codanagr); anagr.put(ANA_CODANAGR,(long)codanagr);
err = anagr.read(); err = anagr.read();
if (err) return NULL; if (err) return NULL;
__tmp = anagr.get(ANA_COFI); return anagr.get(ANA_COFI);
return __tmp;
} }
const char* get_desc_cau(const char* codcau) const char* get_desc_cau(const char* codcau)
{ {
TTable ca7("%ca7"); return cache().get("%CA7", codcau, "S0");
__tmp = "";
ca7.zero();
ca7.put("CODTAB", codcau);
const int rc = ca7.read();
if (rc == NOERR)
__tmp = ca7.get("S0");
return __tmp;
} }
@ -94,32 +89,11 @@ const char* get_desc_cau(const char* codcau)
// Round_770 // Round_770
// //
// Round adattata per 770 - 1.12.95 // Round adattata per 770 - 1.12.95
// Arrotonda cosi':
// se importo > 500 importo -> 1000
// se importo <= 500 importo -> 0
// L'unica differenza con round(-3) e' il comportamento
// alle 500 lire.
// //
real round_770(const real& importo) real round_770(const real& importo)
{ {
const int ndec = TCurrency::get_firm_dec(); real imp = importo;
real imp; imp.round(); // Arrotonda all'Euro
if (ndec == 0)
{
imp = importo / 1000.00;
imp = imp + 0.499;
imp.trunc();
imp *= 1000.00;
/* bel colpo, solo qualche logaritmo naturale in più e poi sarebbe perfetto: bastava
imp = importo - 1.0;
imp.round(-3);
*/
}
else
{
imp = importo;
imp.round(0);
}
return imp; return imp;
} }
@ -147,7 +121,6 @@ int conta_tipiper(const long codit, TString& quadro, int* NumFisiche, int* NumNo
file = LF_QUAGD; file = LF_QUAGD;
TLocalisamfile fl(file); TLocalisamfile fl(file);
fl.zero();
fl.put("CODDITTA", (long) codit); fl.put("CODDITTA", (long) codit);
TRectype dep(fl.curr()); TRectype dep(fl.curr());
for (fl.read(); !fl.eof(); fl.next()) for (fl.read(); !fl.eof(); fl.next())
@ -171,18 +144,28 @@ int conta_tipiper(const long codit, TString& quadro, int* NumFisiche, int* NumNo
// Ritorna l'anno di dichiarazione sui parametri di studio // Ritorna l'anno di dichiarazione sui parametri di studio
int anno_770() int anno_770()
{ {
TConfig conf(CONFIG_STUDIO); TConfig conf(CONFIG_STUDIO, "77");
const int anno = (int)conf.get_long(ANNO_SEL, NULL, -1, TDate(TODAY).year()); const int anno = conf.get_int(ANNO_SEL, NULL, -1, TDate(TODAY).year());
return anno; return anno;
} }
long get_firm_770() long get_firm_770()
{ {
if (!_codditta_770) if (_codditta_770 <= 0)
{ {
const char* section = "77"; TConfig cnf(CONFIG_USER, "77");
TConfig cnf(CONFIG_USER, section); _codditta_770 = cnf.get_long(DITTA_770);
_codditta_770 = cnf.get_long(DITTA_770, section); if (dongle().active(CGAUT))
{
const long codditta_cg = prefix().get_codditta();
if (codditta_cg != _codditta_770)
{
if (codditta_cg <= 0)
prefix().set_codditta(_codditta_770, true);
else
cnf.set(DITTA_770, _codditta_770 = codditta_cg);
}
}
} }
return _codditta_770; return _codditta_770;
@ -190,11 +173,17 @@ long get_firm_770()
void set_firm_770(const long codditta) void set_firm_770(const long codditta)
{ {
if (_codditta_770 == 0 || codditta != _codditta_770) CHECKD(codditta > 0, "Ditta non valida:", codditta);
if (_codditta_770 <= 0 || codditta != _codditta_770)
{ {
const char* section = "77"; TConfig cnf(CONFIG_USER, "77");
TConfig cnf(CONFIG_USER, section);
cnf.set(DITTA_770, codditta); cnf.set(DITTA_770, codditta);
if (dongle().active(CGAUT))
{
const long codditta_cg = prefix().get_codditta();
if (codditta_cg != codditta)
prefix().set_codditta(codditta, true);
}
} }
_codditta_770 = codditta; _codditta_770 = codditta;
} }
@ -202,15 +191,8 @@ void set_firm_770(const long codditta)
// Cerca di stabilire se il titolare della ditta e' PF o PG // Cerca di stabilire se il titolare della ditta e' PF o PG
char tipo_persona(long codditta) char tipo_persona(long codditta)
{ {
TLocalisamfile nditte(LF_NDITTE); const char tipoa = cache().get(LF_NDITTE, codditta, NDT_TIPOA)[0];
return tipoa >= 'F' ? tipoa : '\0';
nditte.zero();
nditte.put("CODDITTA", (long)codditta);
if (nditte.read() == NOERR)
return nditte.get_char("TIPOA");
else
return NULL;
} }
// Stabilisce se coddip esiste // Stabilisce se coddip esiste
@ -249,7 +231,7 @@ bool is_erede(const long codditta, const long coddip)
// Se un qualunque codice erede e' stato compilato => e' un deceduto // Se un qualunque codice erede e' stato compilato => e' un deceduto
bool is_deceduto(const long codditta, const long coddip) bool is_deceduto(const long codditta, const long coddip)
{ {
TLocalisamfile dip (LF_DIPEND); TLocalisamfile dip(LF_DIPEND);
dip.zero(); dip.zero();
dip.put(DIP_CODDITTA, codditta); dip.put(DIP_CODDITTA, codditta);
dip.put(DIP_CODIP, coddip); dip.put(DIP_CODIP, coddip);
@ -259,12 +241,11 @@ bool is_deceduto(const long codditta, const long coddip)
{ {
TString campo("CODEREDE"); TString campo("CODEREDE");
campo << i; campo << i;
TString16 dep; TString16 dep = dip.get(campo);
dep = dip.get(campo); if (dep.full())
if (dep.not_empty()) return true;
return TRUE;
} }
return FALSE; return false;
} }
const int MAX_EREDI = 10; const int MAX_EREDI = 10;
@ -279,7 +260,7 @@ bool scrivi_erede(const long codditta, const long deceduto, const long coddip)
dip.put(DIP_CODIP, (long)deceduto); dip.put(DIP_CODIP, (long)deceduto);
esiste = dip.read(_isequal, _lock) == NOERR; esiste = dip.read(_isequal, _lock) == NOERR;
if (!esiste) return FALSE; if (!esiste) return false;
for (int i=0; i<MAX_EREDI; i++) for (int i=0; i<MAX_EREDI; i++)
{ {
@ -292,19 +273,20 @@ bool scrivi_erede(const long codditta, const long deceduto, const long coddip)
// Se c'e' gia' non lo riscrive // Se c'e' gia' non lo riscrive
if (sCodErede == ValCampo) if (sCodErede == ValCampo)
{ {
trovato = TRUE; trovato = true;
break; break;
} }
if (ValCampo.empty() || ValCampo == "0") if (ValCampo.empty() || ValCampo == "0")
{ {
trovato = TRUE; trovato = true;
dip.put(NomeCampo, sCodErede); dip.put(NomeCampo, sCodErede);
dip.rewrite(); dip.rewrite();
break; break;
} }
} }
if (!trovato) dip.reread(_unlock); if (!trovato)
dip.reread(_unlock);
return trovato; return trovato;
} }
@ -312,8 +294,6 @@ bool riscrivi_erede(const long codditta, const long deceduto, const long erede,
{ {
bool esiste=FALSE, trovato=FALSE; bool esiste=FALSE, trovato=FALSE;
TLocalisamfile dip (LF_DIPEND); TLocalisamfile dip (LF_DIPEND);
dip.zero();
dip.put(DIP_CODDITTA, (long)codditta); dip.put(DIP_CODDITTA, (long)codditta);
dip.put(DIP_CODIP, (long)deceduto); dip.put(DIP_CODIP, (long)deceduto);
esiste = dip.read(_isequal, _lock) == NOERR; esiste = dip.read(_isequal, _lock) == NOERR;
@ -322,7 +302,7 @@ bool riscrivi_erede(const long codditta, const long deceduto, const long erede,
for (int i=0; i<MAX_EREDI; i++) for (int i=0; i<MAX_EREDI; i++)
{ {
TString NomeCampo("CODEREDE"); TString16 NomeCampo("CODEREDE");
NomeCampo << i; NomeCampo << i;
TString ValCampo(dip.get(NomeCampo)); TString ValCampo(dip.get(NomeCampo));
ValCampo.trim(); ValCampo.trim();

View File

@ -20,26 +20,13 @@
const char* get_ragsoc_anagr(char tipo, long codanagr) const char* get_ragsoc_anagr(char tipo, long codanagr)
{ {
TLocalisamfile anagr (LF_ANAG); TString8 key; key.format("%c|%ld", tipo, codanagr);
anagr.put(ANA_TIPOA, tipo); return cache().get(LF_ANAG, key, ANA_RAGSOC);
anagr.put(ANA_CODANAGR, codanagr);
if (anagr.read() == NOERR)
__dep80 = anagr.get(ANA_RAGSOC);
else
__dep80 = "";
return __dep80;
} }
const char* get_ragsoc(const long codditta) const char* get_ragsoc(const long codditta)
{ {
TLocalisamfile ndt(LF_NDITTE); return cache().get(LF_NDITTE, codditta, NDT_RAGSOC);
ndt.put("CODDITTA", codditta);
if (ndt.read() == NOERR)
__dep80=ndt.get("RAGSOC");
else
__dep80="";
return __dep80;
} }
const char* get_printer_name() const char* get_printer_name()