From afd9c24b3e96b220752296a7fa284f911b8059e8 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 11 Mar 2011 14:44:45 +0000 Subject: [PATCH] Patch level : 10.952 Files correlati : cg0.exe Ricompilazione Demo : [ ] Commento : Bug 0001785: Anagrafica clienti (cg0) Abilitare i campi data di nascita comune di nascita e stao di nascita anche per i clienti Bug 0001790: Programma di gestione occasionali Aggiungere questo programma con i campi del file occasionali. git-svn-id: svn://10.65.10.50/branches/R_10_00@21774 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg0.cpp | 1 + cg/cg0.h | 1 + cg/cg0200.h | 2 + cg/cg0200a.uml | 38 ++++++++-- cg/cg0700.cpp | 104 ++++++++++++++++++++++++++++ cg/cg0700a.h | 17 +++++ cg/cg0700a.uml | 184 +++++++++++++++++++++++++++++++++++++++++++++++++ cg/cgmenu.men | 7 +- 8 files changed, 344 insertions(+), 10 deletions(-) create mode 100755 cg/cg0700.cpp create mode 100755 cg/cg0700a.h create mode 100755 cg/cg0700a.uml diff --git a/cg/cg0.cpp b/cg/cg0.cpp index 6145babab..ec4d5e9b7 100755 --- a/cg/cg0.cpp +++ b/cg/cg0.cpp @@ -12,6 +12,7 @@ int main(int argc, char** argv) case 3: cg0400(argc,argv); break; // Progressivi IVA case 4: cg0500(argc,argv); break; // Causali contabili case 5: cg0600(argc,argv); break; // Tabelle contabili + case 6: cg0700(argc,argv); break; // Clienti/Fornitori occasionali default: cg0100(argc,argv); break; // Piano dei conti } exit(0); diff --git a/cg/cg0.h b/cg/cg0.h index 9b3552107..67ab82fe7 100755 --- a/cg/cg0.h +++ b/cg/cg0.h @@ -7,6 +7,7 @@ int cg0300(int argc, char* argv[]); int cg0400(int argc, char* argv[]); int cg0500(int argc, char* argv[]); int cg0600(int argc, char* argv[]); +int cg0700(int argc, char* argv[]); #endif // __CG0_H diff --git a/cg/cg0200.h b/cg/cg0200.h index f70de709b..e8a56d428 100755 --- a/cg/cg0200.h +++ b/cg/cg0200.h @@ -151,6 +151,8 @@ #define F_IMPMINFAT 257 #define F_RIFDOC 258 #define F_CODCAUSINC 259 +#define F_STATONASC 260 +#define F_DESTANASC 261 #define DLG_RIC 300 #define DLG_CST 301 diff --git a/cg/cg0200a.uml b/cg/cg0200a.uml index c1bfcc2ef..e1b8200b8 100755 --- a/cg/cg0200a.uml +++ b/cg/cg0200a.uml @@ -522,7 +522,7 @@ BEGIN CHECKTYPE REQUIRED END -GROUPBOX DLG_NULL 76 6 +GROUPBOX DLG_NULL 76 7 BEGIN PROMPT 1 14 "Dati Percipiente/Nascita" END @@ -580,7 +580,6 @@ DATE F_DATANASC BEGIN PROMPT 2 17 "Data " FIELD DATANASC - GROUP 5 HELP "Data di nascita del cliente/fornitore" END @@ -591,15 +590,14 @@ BEGIN ITEM "M|Maschio" ITEM "F|Femmina" FIELD SESSO - GROUP 5 + GROUP 5 END STRING F_COMNASC 4 BEGIN - PROMPT 60 17 "Comune " + PROMPT 2 18 "Comune " FIELD COMNASC FLAGS "U" - GROUP 5 COPY USE F_COMCF INPUT STATO "" INPUT COM F_COMNASC @@ -614,8 +612,7 @@ END STRING F_DENCOMNASC 50 BEGIN - PROMPT 2 18 "Denominazione " - GROUP 5 + PROMPT 23 18 "" USE LF_COMUNI KEY 2 INPUT DENCOM F_DENCOMNASC COPY DISPLAY F_DENCOMCF @@ -624,6 +621,33 @@ BEGIN ADD RUN ba4 -0 END +NUMBER F_STATONASC 3 +BEGIN + PROMPT 2 19 "Stato " + FIELD STATONASC + FLAGS "Z" + USE %STA + INPUT CODTAB F_STATONASC + DISPLAY "Codice" CODTAB + DISPLAY "Stato@50" S0 + OUTPUT F_STATONASC CODTAB + OUTPUT F_DESTANASC S0 + HELP "Codice dello stato di nascita" + CHECKTYPE NORMAL + WARNING "Stato assente" +END + +STRING F_DESTANASC 50 +BEGIN + PROMPT 23 19 "" + USE %STA KEY 2 + INPUT S0 F_DESTANASC + DISPLAY "Stato@60" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_STATONASC +END + + ENDPAGE PAGE "Banche" -1 -1 78 19 diff --git a/cg/cg0700.cpp b/cg/cg0700.cpp new file mode 100755 index 000000000..7df587243 --- /dev/null +++ b/cg/cg0700.cpp @@ -0,0 +1,104 @@ +#include +#include + +#include "cg0.h" +#include "cg0700a.h" + +#include +#include +#include +#include + +/////////////////////////////////////////////////////////// +// TCheck_PIVA_mask +/////////////////////////////////////////////////////////// + +class TOccas_mask : public TAutomask +{ +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + TOccas_mask() : TAutomask("cg0700a") { } +}; +bool TOccas_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case O_COFI: + if (e == fe_modify) + { + TMask& m = o.mask(); + TString16 cofi = m.get(O_COFI); + if (cofi.blank()) + cofi = m.get(O_CODICE); + + if (cf_check(m.get(O_STATONAS), cofi)) + { + int giorno = atoi(cofi.mid(9,2)); + m.set(O_SESSO, giorno > 40 ? "F" : "M"); + + if (m.field(O_COMUNENAS).empty()) + m.set(O_COMUNENAS, cofi.mid(11,4), 0x2); + + if (m.field(O_DATANAS).empty()) + { + const TFixed_string mesi("ABCDEHLMPRST"); + const int mese = mesi.find(cofi[8])+1; + int anno = atoi(cofi.mid(6,2)); + if (giorno > 0 && mese > 0 && anno > 0) + { + giorno %= 40; + anno += anno < 5 ? 2000 : 1900; + m.set(O_DATANAS, TDate(giorno, mese, anno)); + } + } + } + } + break; + default: break; + } + return true; +} + +class TOccasionali_app : public TRelation_application +{ + TOccas_mask * _msk; + TRelation *_rel; + + bool user_create(); + bool user_destroy(); + virtual TMask* get_mask(int mode) {return _msk;} + virtual bool changing_mask(int mode) {return FALSE;} + +public: + // @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata + virtual bool check_autorization() const { return false; } + virtual TRelation* get_relation() const {return _rel;} +}; + +HIDDEN inline TOccasionali_app& app() { return (TOccasionali_app&) main_app();} + +bool TOccasionali_app::user_create() +{ + open_files(LF_OCCAS, 0); + + _rel = new TRelation(LF_OCCAS); + _msk = new TOccas_mask() ; + + return TRUE; +} + +bool TOccasionali_app::user_destroy() +{ + delete _rel; + delete _msk; + return TRUE; +} + +int cg0700(int argc, char* argv[]) +{ + TOccasionali_app a ; + a.run(argc, argv, TR("Clienti/Fornitori Occasionali")); + return 0; +} diff --git a/cg/cg0700a.h b/cg/cg0700a.h new file mode 100755 index 000000000..eba778752 --- /dev/null +++ b/cg/cg0700a.h @@ -0,0 +1,17 @@ + +// Maschera clienti/fornitori occasionali +#define O_CODICE 100 +#define O_RAGSOC 101 +#define O_STATO 102 +#define O_COMUNE 103 +#define O_DENCOM 104 +#define O_CAP 105 +#define O_INDIRIZZO 106 +#define O_NUMERO 107 +#define O_COFI 108 +#define O_PAIV 109 +#define O_SESSO 110 +#define O_DATANAS 111 +#define O_STATONAS 112 +#define O_COMUNENAS 113 +#define O_DENCOMNAS 114 diff --git a/cg/cg0700a.uml b/cg/cg0700a.uml new file mode 100755 index 000000000..68d768f9b --- /dev/null +++ b/cg/cg0700a.uml @@ -0,0 +1,184 @@ +#include "cg2100.h" + +TOOLBAR "topbar" 0 0 0 2 + +#include + +ENDPAGE + + +PAGE "Clienti/Fornitori occasionali" 0 0 0 0 + +GROUPBOX DLG_NULL 70 4 +BEGIN + PROMPT 1 0 "" +END + +STRING O_CODICE 16 +BEGIN + PROMPT 2 1 "Codice " + FLAGS "U" + USE LF_OCCAS + INPUT CFPI O_CODICE + DISPLAY "Codice@16" CFPI + DISPLAY "Ragione Sociale@50" RAGSOC + OUTPUT O_CODICE CFPI + OUTPUT O_RAGSOC RAGSOC + FIELD CFPI + VALIDATE NOT_EMPTY_FUNC + KEY 1 +END + +STRING O_RAGSOC 50 +BEGIN + PROMPT 2 2 "Ragione sociale " + FIELD RAGSOC + USE LF_OCCAS KEY 2 + INPUT RAGSOC O_RAGSOC + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice@16" CFPI + OUTPUT O_CODICE CFPI + OUTPUT O_RAGSOC RAGSOC + VALIDATE NOT_EMPTY_FUNC + KEY 2 +END + +STRING O_COFI 16 +BEGIN + PROMPT 2 4 "Codice fiscale " + FIELD COFI + FLAGS "U" + VALIDATE XTZCF_FUNC O_STATONAS O_SESSO O_DATANAS O_COMUNENAS +END + +STRING O_PAIV 12 +BEGIN + PROMPT 44 4 "Partita IVA " + FIELD PAIV + VALIDATE PI_FUNC O_STATO +END + +GROUPBOX DLG_NULL 70 5 +BEGIN + PROMPT 1 5 "@bDati residenza" +END + +STRING O_INDIRIZZO 40 +BEGIN + PROMPT 2 6 "Indirizzo " + FIELD INDIR +END + +STRING O_NUMERO 6 +BEGIN + PROMPT 55 6 "Numero " + FIELD CIV +END + +STRING O_STATO 3 +BEGIN + PROMPT 2 7 "Stato " + HELP "Stato di residenza della persona" + FIELD STATO + FLAGS "U" + USE %STA + INPUT CODTAB O_STATO + DISPLAY "Codice" CODTAB + DISPLAY "Denominazione@50" S0 + OUTPUT O_STATO CODTAB + CHECKTYPE NORMAL +END + +STRING O_COMUNE 4 +BEGIN + PROMPT 27 7 "Comune " + FIELD COM + FLAGS "U" + USE LF_COMUNI + INPUT STATO O_STATO + INPUT COM O_COMUNE + DISPLAY "Codice" COM + DISPLAY "Denominazione@50" DENCOM + OUTPUT O_COMUNE COM + OUTPUT O_DENCOM DENCOM + OUTPUT O_CAP CAPCOM + CHECKTYPE NORMAL +END + +NUMBER O_CAP 5 +BEGIN + PROMPT 56 7 "C.A.P. " + HELP "CAP della residenza della persona" + FIELD CAP +END + +STRING O_DENCOM 50 +BEGIN + PROMPT 2 8 "Denominazione " + HELP "Nome del comune di residenza della persona" + USE LF_COMUNI KEY 2 + INPUT DENCOM O_DENCOM + DISPLAY "Denominazione@50" DENCOM + DISPLAY "Codice@10" COM + COPY OUTPUT O_COMUNE + CHECKTYPE NORMAL +END + +GROUPBOX DLG_NULL 70 4 +BEGIN + PROMPT 1 10 "@bDati nascita" +END + +LIST O_SESSO 1 7 +BEGIN + PROMPT 2 11 "Sesso " + ITEM "M|Maschio" + ITEM "F|Femmina" + FLAGS "D" +END + +DATE O_DATANAS +BEGIN + PROMPT 23 11 "Data " + FIELD DNASC +END + +STRING O_STATONAS 3 +BEGIN + PROMPT 41 11 "Stato " + FIELD STATONASC + FLAGS "U" + COPY USE O_STATO + INPUT CODTAB O_STATONAS + COPY DISPLAY O_STATO + OUTPUT O_STATONAS CODTAB + CHECKTYPE NORMAL +END + +STRING O_COMUNENAS 4 +BEGIN + PROMPT 55 11 "Comune " + FIELD COMNASC + FLAGS "U" + COPY USE O_COMUNE + INPUT STATO O_STATONAS + INPUT COM O_COMUNENAS + COPY DISPLAY O_COMUNE + OUTPUT O_COMUNENAS COM + OUTPUT O_DENCOMNAS DENCOM + CHECKTYPE NORMAL +END + +STRING O_DENCOMNAS 50 +BEGIN + PROMPT 2 12 "Denominazione " + COPY USE O_DENCOM + INPUT DENCOM O_DENCOMNAS + COPY DISPLAY O_DENCOM + COPY OUTPUT O_COMUNENAS + CHECKTYPE NORMAL +END + +ENDPAGE + +ENDMASK diff --git a/cg/cgmenu.men b/cg/cgmenu.men index 79264c597..c484b74dc 100755 --- a/cg/cgmenu.men +++ b/cg/cgmenu.men @@ -65,9 +65,10 @@ Item_02 = "Registri", "ba3 -0 reg", "" Item_03 = "Piano dei conti", "cg0 -0", "F" Item_04 = "Causali", "cg0 -4", "F" Item_05 = "Clienti/Fornitori", "cg0 -1", "F" -Item_06 = "Agenti", "pr0 -4", "" -Item_07 = "Cambi giornalieri", "ba3 -0 cam", "" -Item_08 = "Esercizi", "cg0 -5 esc", "F" +Item_06 = "Clienti/Fornitori occasionali", "cg0 -6", "F" +Item_07 = "Agenti", "pr0 -4", "" +Item_08 = "Cambi giornalieri", "ba3 -0 cam", "" +Item_09 = "Esercizi", "cg0 -5 esc", "F" [CGMENU_008] Caption = "Stampa tabelle ditta"