diff --git a/ha/ha0200a.h b/ha/ha0200a.h index 316ab5a63..2e90c94dd 100755 --- a/ha/ha0200a.h +++ b/ha/ha0200a.h @@ -27,10 +27,24 @@ #define F_NA_RIFA_TIP 232 #define F_NA_RIFA_SPE 233 -// Aggiunte il 17/01/2012 -#define F_CODTIPO_FAT2 241 -#define F_DESCRTIPO_FAT2 242 +//------------------------------ +#define F_CO_NOLO_NUM 235 +#define F_CO_NOLO_TIP 237 +#define F_CO_NOLO_SPE 238 +#define F_NA_NOLO_NUM 240 +#define F_NA_NOLO_TIP 242 +#define F_NA_NOLO_SPE 243 +#define F_FT_NOLO_TIP 244 +#define F_FT_NOLO_SPE 245 + +// Aggiunte il 17/01/2012 +#define F_CODTIPO_FAT2 246 +#define F_DESCRTIPO_FAT2 247 + +// Aggiunte il 17/03/2013 +#define F_CODPAG_FAT 248 +#define F_CODPAG_NAC 249 //============================== //pagina 2 diff --git a/ha/ha0200a.uml b/ha/ha0200a.uml index 03443137e..3d8e4f05b 100755 --- a/ha/ha0200a.uml +++ b/ha/ha0200a.uml @@ -1,818 +1,966 @@ -#include "ha0200a.h" - -TOOLBAR "topbar" 0 0 0 2 -#include -ENDPAGE - -//---------------------------- -PAGE "Contratti e NAC" 0 2 0 0 - -GROUPBOX DLG_NULL 76 5 -BEGIN - PROMPT 1 1 "@bTipi documento per fatture" -END - -STRING F_CODTIPO_FAT 4 -BEGIN - PROMPT 2 2 "Immediate " - USE %TIP - INPUT CODTAB F_CODTIPO_FAT - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CODTIPO_FAT CODTAB - OUTPUT F_DESCRTIPO_FAT S0 - CHECKTYPE REQUIRED - FLAGS "U" - FIELD TipoFatt -END - -STRING F_DESCRTIPO_FAT 50 -BEGIN - PROMPT 20 2 "" - USE %TIP KEY 2 - INPUT S0 F_DESCRTIPO_FAT - DISPLAY "Descrizione@60" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT F_CODTIPO_FAT - CHECKTYPE NORMAL -END - -STRING F_CODTIPO_FAT2 4 -BEGIN - PROMPT 2 3 "Differite " - COPY USE F_CODTIPO_FAT - INPUT CODTAB F_CODTIPO_FAT2 - COPY DISPLAY F_CODTIPO_FAT - OUTPUT F_CODTIPO_FAT2 CODTAB - OUTPUT F_DESCRTIPO_FAT2 S0 - CHECKTYPE REQUIRED - FLAGS "U" - FIELD TipoFatt2 -END - -STRING F_DESCRTIPO_FAT2 50 -BEGIN - PROMPT 20 3 "" - COPY USE F_DESCRTIPO_FAT - INPUT S0 F_DESCRTIPO_FAT2 - COPY DISPLAY F_DESCRTIPO_FAT - COPY OUTPUT F_CODTIPO_FAT2 - CHECKTYPE NORMAL -END - - -STRING F_STATO_INI_FAT 1 -BEGIN - PROMPT 2 4 "Stato iniziale " - USE %STD - INPUT CODTAB F_STATO_INI_FAT - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_STATO_INI_FAT CODTAB - FLAGS "U" - CHECKTYPE REQUIRED - FIELD StatoIniFatt -END - -STRING F_STATO_FIN_FAT 1 -BEGIN - PROMPT 25 4 "Stato finale " - USE %STD - INPUT CODTAB F_STATO_FIN_FAT - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_STATO_FIN_FAT CODTAB - FLAGS "U" - CHECKTYPE REQUIRED - FIELD StatoFinFatt -END - -//--Anticipi------------- - -GROUPBOX DLG_NULL 76 4 -BEGIN - PROMPT 1 7 "@bAnticipi" -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 8 "@bContratti premi" -END - -STRING F_CO_ANT_NUM 4 -BEGIN - PROMPT 20 8 "Num. " - USE %NUM - INPUT CODTAB F_CO_ANT_NUM - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CO_ANT_NUM CODTAB - CHECKTYPE REQUIRED - FIELD CoAntNum -END - -STRING F_CO_ANT_TIP 4 -BEGIN - PROMPT 33 8 "Tipo " - USE %TIP - INPUT CODTAB F_CO_ANT_TIP - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CO_ANT_TIP CODTAB - CHECKTYPE REQUIRED - FIELD CoAntTip -END - -STRING F_CO_ANT_SPE 8 -BEGIN - PROMPT 49 8 "Spesa riga ant. " - USE SPP - INPUT CODTAB F_CO_ANT_SPE - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CO_ANT_SPE CODTAB - CHECKTYPE REQUIRED - FIELD CoAntSpe -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 9 "@bNote di Accredito" -END - -STRING F_NA_ANT_NUM 4 -BEGIN - PROMPT 20 9 "Num. " - USE %NUM - INPUT CODTAB F_NA_ANT_NUM - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_NA_ANT_NUM CODTAB - CHECKTYPE REQUIRED - FIELD NaAntNum -END - -STRING F_NA_ANT_TIP 4 -BEGIN - PROMPT 33 9 "Tipo " - USE %TIP - INPUT CODTAB F_NA_ANT_TIP - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_NA_ANT_TIP CODTAB - CHECKTYPE REQUIRED - FIELD NaAntTip -END - -STRING F_NA_ANT_SPE 8 -BEGIN - PROMPT 49 9 "Spesa riga " - USE SPP - INPUT CODTAB F_NA_ANT_SPE - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_NA_ANT_SPE CODTAB - CHECKTYPE REQUIRED - FIELD NaAntSpe -END - -//--Posticipi------------- - -GROUPBOX DLG_NULL 76 4 -BEGIN - PROMPT 1 11 "@bPosticipi" -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 12 "@bContratti premi" -END - -STRING F_CO_POST_NUM 4 -BEGIN - PROMPT 20 12 "Num. " - USE %NUM - INPUT CODTAB F_CO_POST_NUM - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CO_POST_NUM CODTAB - CHECKTYPE REQUIRED - FIELD CoPostNum -END - -STRING F_CO_POST_TIP 4 -BEGIN - PROMPT 33 12 "Tipo " - USE %TIP - INPUT CODTAB F_CO_POST_TIP - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CO_POST_TIP CODTAB - CHECKTYPE REQUIRED - FIELD CoPostTip -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 13 "@bNote di Accredito" -END - -STRING F_NA_POST_NUM 4 -BEGIN - PROMPT 20 13 "Num. " - USE %NUM - INPUT CODTAB F_NA_POST_NUM - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_NA_POST_NUM CODTAB - CHECKTYPE REQUIRED - FIELD NaPostNum -END - -STRING F_NA_POST_TIP 4 -BEGIN - PROMPT 33 13 "Tipo " - USE %TIP - INPUT CODTAB F_NA_POST_TIP - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_NA_POST_TIP CODTAB - CHECKTYPE REQUIRED - FIELD NaPostTip -END - -STRING F_NA_POST_SPE 8 -BEGIN - PROMPT 49 13 "Spesa riga " - USE SPP - INPUT CODTAB F_NA_POST_SPE - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_NA_POST_SPE CODTAB - CHECKTYPE REQUIRED - FIELD NaPostSpe -END - -//--Rifatturazione------------- - -GROUPBOX DLG_NULL 76 4 -BEGIN - PROMPT 1 16 "@bRifatturazione" -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 17 "@bContratti premi" -END - -STRING F_CO_RIFA_NUM 4 -BEGIN - PROMPT 20 17 "Num. " - USE %NUM - INPUT CODTAB F_CO_RIFA_NUM - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CO_RIFA_NUM CODTAB - CHECKTYPE REQUIRED - FIELD CoRifaNum -END - -STRING F_CO_RIFA_TIP 4 -BEGIN - PROMPT 33 17 "Tipo " - USE %TIP - INPUT CODTAB F_CO_RIFA_TIP - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CO_RIFA_TIP CODTAB - CHECKTYPE REQUIRED - FIELD CoRifaTip -END - -STRING F_CO_RIFA_SPE 8 -BEGIN - PROMPT 49 17 "Spesa riga ant. " - USE SPP - INPUT CODTAB F_CO_RIFA_SPE - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CO_RIFA_SPE CODTAB - CHECKTYPE REQUIRED - FIELD CoRifaSpe -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 18 "@bNote di Accredito" -END - -STRING F_NA_RIFA_NUM 4 -BEGIN - PROMPT 20 18 "Num. " - USE %NUM - INPUT CODTAB F_NA_RIFA_NUM - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_NA_RIFA_NUM CODTAB - CHECKTYPE REQUIRED - FIELD NaRifaNum -END - -STRING F_NA_RIFA_TIP 4 -BEGIN - PROMPT 33 18 "Tipo " - USE %TIP - INPUT CODTAB F_NA_RIFA_TIP - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_NA_RIFA_TIP CODTAB - CHECKTYPE REQUIRED - FIELD NaRifaTip -END - -STRING F_NA_RIFA_SPE 8 -BEGIN - PROMPT 49 18 "Spesa riga " - USE SPP - INPUT CODTAB F_NA_RIFA_SPE - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_NA_RIFA_SPE CODTAB - CHECKTYPE REQUIRED - FIELD NaRifaSpe -END - -ENDPAGE - - -//---------------------------- -PAGE "Trasferimenti" 0 2 0 0 - -GROUPBOX DLG_NULL 76 8 -BEGIN - PROMPT 1 0 "@bEsportazione" -END - -STRING F_OUTPUT_PATH 255 40 -BEGIN - PROMPT 2 1 "Server: percorso files .txt " - DSELECT - FLAGS "M" - CHECKTYPE REQUIRED - WARNING "Selezionare una cartella valida!" - FIELD OutputPath -END - -STRING F_CONCENTRATORE_PATH 255 40 -BEGIN - PROMPT 2 2 "Server: Percorso concentratore " - DSELECT - FLAGS "M" - CHECKTYPE REQUIRED - WARNING "Selezionare una cartella valida!" - FIELD ConcentratorePath -END - -STRING F_TRANSACTION_PATH 255 40 -BEGIN - PROMPT 2 3 "Client: Percorso .ini transaz. " - DSELECT - FLAGS "M" - CHECKTYPE REQUIRED - WARNING "Selezionare una cartella valida!" - FIELD TransactionPath -END - -LISTBOX F_OU_BARCODE_TIP 10 -BEGIN - PROMPT 2 4 "Tipo di barcode " - ITEM "N|Normale" - ITEM "8|EAN8 " - ITEM "1|EA13 " - ITEM "3|3/9 " - ITEM "C|Codabar" - FIELD TipoBarcode -END - -GROUPBOX DLG_NULL 74 3 -BEGIN - PROMPT 2 5 "@bDocumenti di carico" -END - -STRING F_OU_CARDOC_NUM 4 -BEGIN - PROMPT 3 6 "Numerazione " - USE %NUM - INPUT CODTAB F_OU_CARDOC_NUM - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_OU_CARDOC_NUM CODTAB - CHECKTYPE REQUIRED - FIELD CarDocNum -END - -STRING F_OU_CARDOC_TIP 4 -BEGIN - PROMPT 24 6 "Tipo " - USE %TIP - INPUT CODTAB F_OU_CARDOC_TIP - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_OU_CARDOC_TIP CODTAB - CHECKTYPE REQUIRED - FLAGS "U" - FIELD CarDocTip -END - -STRING F_OU_CARDOC_STA 1 -BEGIN - PROMPT 38 6 "Stato iniziale" - USE %STD - INPUT CODTAB F_OU_CARDOC_STA - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_OU_CARDOC_STA CODTAB - FLAGS "U" - CHECKTYPE REQUIRED - FIELD CarDocSta -END - -STRING F_OU_CARDOC_STAF 1 -BEGIN - PROMPT 58 6 "Stato finale" - COPY USE F_OU_CARDOC_STA - INPUT CODTAB F_OU_CARDOC_STAF - COPY DISPLAY F_OU_CARDOC_STA - OUTPUT F_OU_CARDOC_STAF CODTAB - FLAGS "U" - CHECKTYPE REQUIRED - FIELD CarDocFin -END - -GROUPBOX DLG_NULL 76 15 -BEGIN - PROMPT 1 8 "@bImportazione" -END - -STRING F_INPUT_PATH 255 43 -BEGIN - PROMPT 2 9 "Percorso files da importare " - DSELECT - FLAGS "M" - CHECKTYPE REQUIRED - WARNING "Selezionare una cartella valida!" - FIELD InputPath -END - -STRING F_ARCHIVE_PATH 255 43 -BEGIN - PROMPT 2 10 "Percorso files da archiviare " - DSELECT - FLAGS "M" - CHECKTYPE REQUIRED - WARNING "Selezionare una cartella valida!" - FIELD ArchivePath -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 11 "@bTipi documento generati in importazione" -END - -STRING F_IN_TIPODOC_F 4 -BEGIN - PROMPT 2 12 "Fatture " - USE %TIP - INPUT CODTAB F_IN_TIPODOC_F - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_IN_TIPODOC_F CODTAB - CHECKTYPE REQUIRED - FIELD InpFatTip -END - -STRING F_IN_TIPODOC_B 4 -BEGIN - PROMPT 18 12 "Bolle " - USE %TIP - INPUT CODTAB F_IN_TIPODOC_B - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_IN_TIPODOC_B CODTAB - CHECKTYPE REQUIRED - FIELD InpBolTip -END - -STRING F_IN_TIPODOC_O 4 -BEGIN - PROMPT 34 12 "Ordini " - USE %TIP - INPUT CODTAB F_IN_TIPODOC_O - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_IN_TIPODOC_O CODTAB - CHECKTYPE REQUIRED - FIELD InpOrdTip -END - -STRING F_IN_TIPODOC_V 4 -BEGIN - PROMPT 50 12 "Bolle valorizz. " - USE %TIP - INPUT CODTAB F_IN_TIPODOC_V - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_IN_TIPODOC_V CODTAB - CHECKTYPE REQUIRED - FIELD InpValTip -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 13 "Le numerazioni sono generate automaticamente in base al tipo documento ricevuto" -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 14 "ed al codice terminale, secondo la regola: 'TipoDocumento'+'CodiceTerminale. Es. 'F'+'001' -> F001" -END - -STRING F_IN_CODCAUS 3 -BEGIN - PROMPT 2 15 "Causale movimenti da incassi " - FLAGS "UZ" - USE LF_CAUSALI - INPUT CODCAUS F_IN_CODCAUS - DISPLAY "Cod." CODCAUS - DISPLAY "Descrizione@50" DESCR - OUTPUT F_IN_CODCAUS CODCAUS - OUTPUT F_IN_DESCRCAUS DESCR - CHECKTYPE REQUIRED - FIELD InpCausale -END - -STRING F_IN_DESCRCAUS 50 37 -BEGIN - PROMPT 37 15 "" - USE LF_CAUSALI KEY 2 - INPUT DESCR F_IN_DESCRCAUS - DISPLAY "Descrizione @50" DESCR - DISPLAY "Cod." CODCAUS - COPY OUTPUT F_IN_CODCAUS - CHECKTYPE NORMAL -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 17 "@bCodici IVA Campo da utilizzare in base alle aliquote" -END - -SPREADSHEET F_CODICI_IVA 74 4 -BEGIN - PROMPT 2 18 "" - ITEM "%IVA@6" - ITEM "Cod.IVA" - ITEM "Descrizione" -END - -ENDPAGE - - -//------------------------------------- -PAGE "Configurazione Esselunga" 0 2 0 0 - -STRING F_E_PATH 255 39 -BEGIN - PROMPT 2 2 "Percorso file FATTURE da spedire " - DSELECT - FLAGS "M" - CHECKTYPE REQUIRED - WARNING "Selezionare una cartella valida!" - FIELD Esselunga_Path -END - -STRING F_E_PRIVATPATH 255 39 -BEGIN - PROMPT 2 3 "Percorso file PRIVAT da spedire " - DSELECT - FLAGS "M" - CHECKTYPE REQUIRED - WARNING "Selezionare una cartella valida!" - FIELD Esselunga_PrivatPath -END - - -STRING F_E_PIVA_HARDY 12 -BEGIN - PROMPT 2 4 "Partita IVA Hardy " - HELP "Partita IVA Hardy" - FIELD Esselunga_PIvaHardy -END - -STRING F_E_PIVA_ESSELUNGA 12 -BEGIN - PROMPT 2 5 "Partita IVA Esselunga " - HELP "Partita IVA Esselunga" - FIELD Esselunga_PIvaEsselunga -END - -NUMBER F_E_COD_HARDY 6 -BEGIN - PROMPT 2 6 "Cod. fornitore Hardy " - HELP "Codice fornitore Hardy presso Esselunga" - FIELD Esselunga_CodHardy -END - -NUMBER F_E_COD_ESSELUNGA 6 -BEGIN - PROMPT 2 7 "Cod. cliente Esselunga " - HELP "Codice cliente Esselunga presso Hardy" - FIELD Esselunga_CodEsselunga -END - -STRING F_E_TIPOEMISSIONE 2 -BEGIN - PROMPT 2 8 "Tipo Emissione " - HELP "Tipo emissione" - FIELD Esselunga_TipoEmissione -END - -DATE F_E_DATACONF -BEGIN - PROMPT 2 9 "Data di configurazione " - HELP "Data di configurazione " - FIELD Esselunga_DatConf -END - -ENDPAGE - - -//------------------------------------ -PAGE "Cartellini attrezzature" 0 2 0 0 - -GROUPBOX DLG_NULL 76 6 -BEGIN - PROMPT 1 1 "@bParametri documenti" -END - -STRING F_TIPO_DOC2ELAB 4 -BEGIN - PROMPT 2 2 "Tipo " - USE %TIP - INPUT CODTAB F_TIPO_DOC2ELAB - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_TIPO_DOC2ELAB CODTAB - OUTPUT F_TIPO_DOC2ELAB_DESCR S0 - FLAGS "U" - CHECKTYPE REQUIRED - FIELD Doc2ElabTip -END - -STRING F_TIPO_DOC2ELAB_DESCR 50 -BEGIN - PROMPT 20 2 "" - USE %TIP KEY 2 - INPUT S0 F_TIPO_DOC2ELAB_DESCR - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT F_TIPO_DOC2ELAB - CHECKTYPE NORMAL -END - -STRING F_STATO_DOC2ELAB 1 -BEGIN - PROMPT 2 3 "Stato " - USE %STD - INPUT CODTAB F_STATO_DOC2ELAB - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_STATO_DOC2ELAB CODTAB - OUTPUT F_STATO_DOC2ELAB_DESCR S0 - FLAGS "U" - CHECKTYPE REQUIRED - FIELD Doc2ElabSta -END - -STRING F_STATO_DOC2ELAB_DESCR 50 -BEGIN - PROMPT 20 3 "" - USE %STD KEY 2 - INPUT S0 F_STATO_DOC2ELAB_DESCR - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT F_STATO_DOC2ELAB - CHECKTYPE NORMAL -END - -STRING F_CAUSMAG_APERTURA 5 -BEGIN - PROMPT 2 4 "Causale apertura " - USE %CAU - INPUT CODTAB F_CAUSMAG_APERTURA - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CAUSMAG_APERTURA CODTAB - OUTPUT F_CAUSMAG_APERTURA_DESCR S0 - CHECKTYPE REQUIRED - FLAGS "U" - FIELD CausOpen -END - -STRING F_CAUSMAG_APERTURA_DESCR 50 46 -BEGIN - PROMPT 28 4 "" - USE %CAU KEY 2 - INPUT S0 F_CAUSMAG_APERTURA_DESCR - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT F_CAUSMAG_APERTURA - CHECKTYPE NORMAL -END - -STRING F_CAUSMAG_CHIUSURA 5 -BEGIN - PROMPT 2 5 "Causale chiusura " - COPY USE F_CAUSMAG_APERTURA - INPUT CODTAB F_CAUSMAG_CHIUSURA - COPY DISPLAY F_CAUSMAG_APERTURA - OUTPUT F_CAUSMAG_CHIUSURA CODTAB - OUTPUT F_CAUSMAG_CHIUSURA_DESCR S0 - CHECKTYPE REQUIRED - FLAGS "U" - FIELD CausClose -END - -STRING F_CAUSMAG_CHIUSURA_DESCR 50 46 -BEGIN - PROMPT 28 5 "" - COPY USE F_CAUSMAG_APERTURA_DESCR - INPUT S0 F_CAUSMAG_CHIUSURA_DESCR - COPY DISPLAY F_CAUSMAG_APERTURA_DESCR - COPY OUTPUT F_CAUSMAG_CHIUSURA - CHECKTYPE NORMAL -END - -ENDPAGE - -ENDMASK - -//-------------------------------------------------------------- -//maschera di riga dello sheet pagina trasferimenti (Codici iva) - -PAGE "Riga" -1 -1 64 4 - -NUMBER S_ALIQUOTA_IVA 6 2 -BEGIN - PROMPT 1 1 "% IVA@6" - FLAGS "U" - CHECKTYPE REQUIRED - FIELD IVAaliquota -END - -STRING S_CAMPO_CODIVA 4 -BEGIN - PROMPT 1 2 "Cod. IVA Campo " - USE %IVA - INPUT CODTAB S_CAMPO_CODIVA - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT S_CAMPO_CODIVA CODTAB - OUTPUT S_CAMPO_CODIVA_DES S0 - CHECKTYPE REQUIRED - FIELD IVAcodice -END - -STRING S_CAMPO_CODIVA_DES 50 -BEGIN - PROMPT 25 2 "" - USE %IVA KEY 2 - INPUT S0 S_CAMPO_CODIVA_DES - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT S_CAMPO_CODIVA - CHECKTYPE REQUIRED -END - -ENDPAGE - -TOOLBAR "topbar" 0 0 0 2 - -BUTTON DLG_OK 2 2 -BEGIN - PROMPT 1 1 "" -END - -BUTTON DLG_DELREC 2 2 -BEGIN - PROMPT 2 1 "" -END - -BUTTON DLG_CANCEL 2 2 -BEGIN - PROMPT 3 1 "" -END - -ENDPAGE - -ENDMASK +#include "ha0200a.h" + +TOOLBAR "topbar" 0 0 0 2 +#include +ENDPAGE + +//---------------------------- +PAGE "Contratti e NAC" 0 2 0 0 + +GROUPBOX DLG_NULL 76 6 +BEGIN + PROMPT 1 0 "@bTipi documento per fatture" +END + +STRING F_CODTIPO_FAT 4 +BEGIN + PROMPT 2 1 "Immediate " + USE %TIP + INPUT CODTAB F_CODTIPO_FAT + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODTIPO_FAT CODTAB + OUTPUT F_DESCRTIPO_FAT S0 + CHECKTYPE REQUIRED + FLAGS "U" + FIELD TipoFatt +END + +STRING F_DESCRTIPO_FAT 50 +BEGIN + PROMPT 20 1 "" + USE %TIP KEY 2 + INPUT S0 F_DESCRTIPO_FAT + DISPLAY "Descrizione@60" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_CODTIPO_FAT + CHECKTYPE NORMAL +END + +STRING F_CODTIPO_FAT2 4 +BEGIN + PROMPT 2 2 "Differite " + COPY USE F_CODTIPO_FAT + INPUT CODTAB F_CODTIPO_FAT2 + COPY DISPLAY F_CODTIPO_FAT + OUTPUT F_CODTIPO_FAT2 CODTAB + OUTPUT F_DESCRTIPO_FAT2 S0 + CHECKTYPE REQUIRED + FLAGS "U" + FIELD TipoFatt2 +END + +STRING F_DESCRTIPO_FAT2 50 +BEGIN + PROMPT 20 2 "" + COPY USE F_DESCRTIPO_FAT + INPUT S0 F_DESCRTIPO_FAT2 + COPY DISPLAY F_DESCRTIPO_FAT + COPY OUTPUT F_CODTIPO_FAT2 + CHECKTYPE NORMAL +END + +STRING F_STATO_INI_FAT 1 +BEGIN + PROMPT 2 3 "Stato iniziale " + USE %STD + INPUT CODTAB F_STATO_INI_FAT + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_STATO_INI_FAT CODTAB + FLAGS "U" + CHECKTYPE REQUIRED + FIELD StatoIniFatt +END + +STRING F_STATO_FIN_FAT 1 +BEGIN + PROMPT 41 3 "Stato finale " + USE %STD + INPUT CODTAB F_STATO_FIN_FAT + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_STATO_FIN_FAT CODTAB + FLAGS "U" + CHECKTYPE REQUIRED + FIELD StatoFinFatt +END + +STRING F_CODPAG_FAT 4 +BEGIN + PROMPT 2 4 "Condizione pagamento Fatture " + USE %CPG + INPUT CODTAB F_CODPAG_FAT + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODPAG_FAT CODTAB + CHECKTYPE REQUIRED + FIELD CodPagFat +END + +STRING F_CODPAG_NAC 4 +BEGIN + PROMPT 41 4 "Condizione pagamento NAC " + COPY USE F_CODPAG_FAT + INPUT CODTAB F_CODPAG_NAC + COPY DISPLAY F_CODPAG_FAT + OUTPUT F_CODPAG_NAC CODTAB + CHECKTYPE NORMAL + FIELD CodPagNac +END + +//--Anticipi------------- + +GROUPBOX DLG_NULL 76 4 +BEGIN + PROMPT 1 6 "@bAnticipi" +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 7 "@bContratti premi" +END + +STRING F_CO_ANT_NUM 4 +BEGIN + PROMPT 20 7 "Num. " + USE %NUM + INPUT CODTAB F_CO_ANT_NUM + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_ANT_NUM CODTAB + CHECKTYPE REQUIRED + FIELD CoAntNum + FLAGS "U" +END + +STRING F_CO_ANT_TIP 4 +BEGIN + PROMPT 34 7 "Tipo " + USE %TIP + INPUT CODTAB F_CO_ANT_TIP + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_ANT_TIP CODTAB + CHECKTYPE REQUIRED + FIELD CoAntTip +END + +STRING F_CO_ANT_SPE 8 +BEGIN + PROMPT 49 7 "Spesa riga ant. " + USE SPP + INPUT CODTAB F_CO_ANT_SPE + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_ANT_SPE CODTAB + CHECKTYPE REQUIRED + FIELD CoAntSpe +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 8 "@bNote di Accredito" +END + +STRING F_NA_ANT_NUM 4 +BEGIN + PROMPT 20 8 "Num. " + USE %NUM + INPUT CODTAB F_NA_ANT_NUM + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_ANT_NUM CODTAB + CHECKTYPE REQUIRED + FIELD NaAntNum + FLAGS "U" +END + +STRING F_NA_ANT_TIP 4 +BEGIN + PROMPT 34 8 "Tipo " + USE %TIP + INPUT CODTAB F_NA_ANT_TIP + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_ANT_TIP CODTAB + CHECKTYPE REQUIRED + FIELD NaAntTip +END + +STRING F_NA_ANT_SPE 8 +BEGIN + PROMPT 49 8 "Spesa riga " + USE SPP + INPUT CODTAB F_NA_ANT_SPE + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_ANT_SPE CODTAB + CHECKTYPE REQUIRED + FIELD NaAntSpe +END + +//--Posticipi------------- + +GROUPBOX DLG_NULL 76 4 +BEGIN + PROMPT 1 10 "@bPosticipi" +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 11 "@bContratti premi" +END + +STRING F_CO_POST_NUM 4 +BEGIN + PROMPT 20 11 "Num. " + USE %NUM + INPUT CODTAB F_CO_POST_NUM + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_POST_NUM CODTAB + CHECKTYPE REQUIRED + FIELD CoPostNum + FLAGS "U" +END + +STRING F_CO_POST_TIP 4 +BEGIN + PROMPT 34 11 "Tipo " + USE %TIP + INPUT CODTAB F_CO_POST_TIP + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_POST_TIP CODTAB + CHECKTYPE REQUIRED + FIELD CoPostTip +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 12 "@bNote di Accredito" +END + +STRING F_NA_POST_NUM 4 +BEGIN + PROMPT 20 12 "Num. " + USE %NUM + INPUT CODTAB F_NA_POST_NUM + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_POST_NUM CODTAB + CHECKTYPE REQUIRED + FIELD NaPostNum + FLAGS "U" +END + +STRING F_NA_POST_TIP 4 +BEGIN + PROMPT 34 12 "Tipo " + USE %TIP + INPUT CODTAB F_NA_POST_TIP + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_POST_TIP CODTAB + CHECKTYPE REQUIRED + FIELD NaPostTip +END + +STRING F_NA_POST_SPE 8 +BEGIN + PROMPT 49 12 "Spesa riga " + USE SPP + INPUT CODTAB F_NA_POST_SPE + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_POST_SPE CODTAB + CHECKTYPE REQUIRED + FIELD NaPostSpe +END + +//--Rifatturazione------------- + +GROUPBOX DLG_NULL 76 4 +BEGIN + PROMPT 1 14 "@bRifatturazione" +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 15 "@bContratti premi" +END + +STRING F_CO_RIFA_NUM 4 +BEGIN + PROMPT 20 15 "Num. " + USE %NUM + INPUT CODTAB F_CO_RIFA_NUM + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_RIFA_NUM CODTAB + CHECKTYPE REQUIRED + FIELD CoRifaNum + FLAGS "U" +END + +STRING F_CO_RIFA_TIP 4 +BEGIN + PROMPT 34 15 "Tipo " + USE %TIP + INPUT CODTAB F_CO_RIFA_TIP + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_RIFA_TIP CODTAB + CHECKTYPE REQUIRED + FIELD CoRifaTip +END + +STRING F_CO_RIFA_SPE 8 +BEGIN + PROMPT 49 15 "Spesa riga ant. " + USE SPP + INPUT CODTAB F_CO_RIFA_SPE + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_RIFA_SPE CODTAB + CHECKTYPE REQUIRED + FIELD CoRifaSpe +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 16 "@bNote di Accredito" +END + +STRING F_NA_RIFA_NUM 4 +BEGIN + PROMPT 20 16 "Num. " + USE %NUM + INPUT CODTAB F_NA_RIFA_NUM + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_RIFA_NUM CODTAB + CHECKTYPE REQUIRED + FIELD NaRifaNum + FLAGS "U" +END + +STRING F_NA_RIFA_TIP 4 +BEGIN + PROMPT 34 16 "Tipo " + USE %TIP + INPUT CODTAB F_NA_RIFA_TIP + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_RIFA_TIP CODTAB + CHECKTYPE REQUIRED + FIELD NaRifaTip +END + +STRING F_NA_RIFA_SPE 8 +BEGIN + PROMPT 49 16 "Spesa riga " + USE SPP + INPUT CODTAB F_NA_RIFA_SPE + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_RIFA_SPE CODTAB + CHECKTYPE REQUIRED + FIELD NaRifaSpe +END + + +//--Noleggio------------- + +GROUPBOX DLG_NULL 76 5 +BEGIN + PROMPT 1 18 "@bNoleggio" +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 19 "@bContratti premi" +END + +STRING F_CO_NOLO_NUM 4 +BEGIN + PROMPT 20 19 "Num. " + USE %NUM + INPUT CODTAB F_CO_NOLO_NUM + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_NOLO_NUM CODTAB + CHECKTYPE REQUIRED + FIELD CoNoloNum + FLAGS "U" +END + +STRING F_CO_NOLO_TIP 4 +BEGIN + PROMPT 34 19 "Tipo " + USE %TIP + INPUT CODTAB F_CO_NOLO_TIP + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_NOLO_TIP CODTAB + CHECKTYPE REQUIRED + FIELD CoNoloTip +END + +STRING F_CO_NOLO_SPE 8 +BEGIN + PROMPT 49 19 "Spesa riga ant. " + USE SPP + INPUT CODTAB F_CO_NOLO_SPE + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CO_NOLO_SPE CODTAB + CHECKTYPE REQUIRED + FIELD CoNoloSpe +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 20 "@bNote di Accredito" +END + +STRING F_NA_NOLO_NUM 4 +BEGIN + PROMPT 20 20 "Num. " + USE %NUM + INPUT CODTAB F_NA_NOLO_NUM + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_NOLO_NUM CODTAB + CHECKTYPE REQUIRED + FIELD NaNoloNum + FLAGS "U" +END + +STRING F_NA_NOLO_TIP 4 +BEGIN + PROMPT 34 20 "Tipo " + USE %TIP + INPUT CODTAB F_NA_NOLO_TIP + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_NOLO_TIP CODTAB + CHECKTYPE REQUIRED + FIELD NaNoloTip +END + +STRING F_NA_NOLO_SPE 8 +BEGIN + PROMPT 49 20 "Spesa riga " + USE SPP + INPUT CODTAB F_NA_NOLO_SPE + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NA_NOLO_SPE CODTAB + CHECKTYPE REQUIRED + FIELD NaNoloSpe +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 21 "@bFatture" +END + +STRING F_FT_NOLO_TIP 4 +BEGIN + PROMPT 34 21 "Tipo " + COPY USE F_NA_NOLO_TIP + INPUT CODTAB F_FT_NOLO_TIP + COPY DISPLAY F_NA_NOLO_TIP + OUTPUT F_FT_NOLO_TIP CODTAB + CHECKTYPE REQUIRED + FIELD FtNoloTip +END + +STRING F_FT_NOLO_SPE 8 +BEGIN + PROMPT 49 21 "Spesa riga " + COPY USE F_NA_NOLO_SPE + INPUT CODTAB F_FT_NOLO_SPE + COPY DISPLAY F_NA_NOLO_SPE + OUTPUT F_FT_NOLO_SPE CODTAB + CHECKTYPE REQUIRED + FIELD FtNoloSpe +END + +ENDPAGE + + +//---------------------------- +PAGE "Trasferimenti" 0 2 0 0 + +GROUPBOX DLG_NULL 76 8 +BEGIN + PROMPT 1 0 "@bEsportazione" +END + +STRING F_OUTPUT_PATH 255 40 +BEGIN + PROMPT 2 1 "Server: percorso files .txt " + DSELECT + FLAGS "M" + CHECKTYPE REQUIRED + WARNING "Selezionare una cartella valida!" + FIELD OutputPath +END + +STRING F_CONCENTRATORE_PATH 255 40 +BEGIN + PROMPT 2 2 "Server: Percorso concentratore " + DSELECT + FLAGS "M" + CHECKTYPE REQUIRED + WARNING "Selezionare una cartella valida!" + FIELD ConcentratorePath +END + +STRING F_TRANSACTION_PATH 255 40 +BEGIN + PROMPT 2 3 "Client: Percorso .ini transaz. " + DSELECT + FLAGS "M" + CHECKTYPE REQUIRED + WARNING "Selezionare una cartella valida!" + FIELD TransactionPath +END + +LISTBOX F_OU_BARCODE_TIP 10 +BEGIN + PROMPT 2 4 "Tipo di barcode " + ITEM "N|Normale" + ITEM "8|EAN8 " + ITEM "1|EA13 " + ITEM "3|3/9 " + ITEM "C|Codabar" + FIELD TipoBarcode +END + +GROUPBOX DLG_NULL 74 3 +BEGIN + PROMPT 2 5 "@bDocumenti di carico" +END + +STRING F_OU_CARDOC_NUM 4 +BEGIN + PROMPT 3 6 "Numerazione " + USE %NUM + INPUT CODTAB F_OU_CARDOC_NUM + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_OU_CARDOC_NUM CODTAB + CHECKTYPE REQUIRED + FIELD CarDocNum + FLAGS "U" +END + +STRING F_OU_CARDOC_TIP 4 +BEGIN + PROMPT 24 6 "Tipo " + USE %TIP + INPUT CODTAB F_OU_CARDOC_TIP + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_OU_CARDOC_TIP CODTAB + CHECKTYPE REQUIRED + FLAGS "U" + FIELD CarDocTip +END + +STRING F_OU_CARDOC_STA 1 +BEGIN + PROMPT 38 6 "Stato iniziale" + USE %STD + INPUT CODTAB F_OU_CARDOC_STA + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_OU_CARDOC_STA CODTAB + FLAGS "U" + CHECKTYPE REQUIRED + FIELD CarDocSta +END + +STRING F_OU_CARDOC_STAF 1 +BEGIN + PROMPT 58 6 "Stato finale" + COPY USE F_OU_CARDOC_STA + INPUT CODTAB F_OU_CARDOC_STAF + COPY DISPLAY F_OU_CARDOC_STA + OUTPUT F_OU_CARDOC_STAF CODTAB + FLAGS "U" + CHECKTYPE REQUIRED + FIELD CarDocFin +END + +GROUPBOX DLG_NULL 76 15 +BEGIN + PROMPT 1 8 "@bImportazione" +END + +STRING F_INPUT_PATH 255 43 +BEGIN + PROMPT 2 9 "Percorso files da importare " + DSELECT + FLAGS "M" + CHECKTYPE REQUIRED + WARNING "Selezionare una cartella valida!" + FIELD InputPath +END + +STRING F_ARCHIVE_PATH 255 43 +BEGIN + PROMPT 2 10 "Percorso files da archiviare " + DSELECT + FLAGS "M" + CHECKTYPE REQUIRED + WARNING "Selezionare una cartella valida!" + FIELD ArchivePath +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 11 "@bTipi documento generati in importazione" +END + +STRING F_IN_TIPODOC_F 4 +BEGIN + PROMPT 2 12 "Fatture " + USE %TIP + INPUT CODTAB F_IN_TIPODOC_F + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_IN_TIPODOC_F CODTAB + CHECKTYPE REQUIRED + FIELD InpFatTip +END + +STRING F_IN_TIPODOC_B 4 +BEGIN + PROMPT 18 12 "Bolle " + USE %TIP + INPUT CODTAB F_IN_TIPODOC_B + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_IN_TIPODOC_B CODTAB + CHECKTYPE REQUIRED + FIELD InpBolTip +END + +STRING F_IN_TIPODOC_O 4 +BEGIN + PROMPT 34 12 "Ordini " + USE %TIP + INPUT CODTAB F_IN_TIPODOC_O + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_IN_TIPODOC_O CODTAB + CHECKTYPE REQUIRED + FIELD InpOrdTip +END + +STRING F_IN_TIPODOC_V 4 +BEGIN + PROMPT 50 12 "Bolle valorizz. " + USE %TIP + INPUT CODTAB F_IN_TIPODOC_V + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_IN_TIPODOC_V CODTAB + CHECKTYPE REQUIRED + FIELD InpValTip +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 13 "Le numerazioni sono generate automaticamente in base al tipo documento ricevuto" +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 14 "ed al codice terminale, secondo la regola: 'TipoDocumento'+'CodiceTerminale. Es. 'F'+'001' -> F001" +END + +STRING F_IN_CODCAUS 3 +BEGIN + PROMPT 2 15 "Causale movimenti da incassi " + FLAGS "UZ" + USE LF_CAUSALI + INPUT CODCAUS F_IN_CODCAUS + DISPLAY "Cod." CODCAUS + DISPLAY "Descrizione@50" DESCR + OUTPUT F_IN_CODCAUS CODCAUS + OUTPUT F_IN_DESCRCAUS DESCR + CHECKTYPE REQUIRED + FIELD InpCausale +END + +STRING F_IN_DESCRCAUS 50 37 +BEGIN + PROMPT 37 15 "" + USE LF_CAUSALI KEY 2 + INPUT DESCR F_IN_DESCRCAUS + DISPLAY "Descrizione @50" DESCR + DISPLAY "Cod." CODCAUS + COPY OUTPUT F_IN_CODCAUS + CHECKTYPE NORMAL +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 17 "@bCodici IVA Campo da utilizzare in base alle aliquote" +END + +SPREADSHEET F_CODICI_IVA 74 4 +BEGIN + PROMPT 2 18 "" + ITEM "%IVA@6" + ITEM "Cod.IVA" + ITEM "Descrizione" +END + +ENDPAGE + + +//------------------------------------- +PAGE "Configurazione Esselunga" 0 2 0 0 + +STRING F_E_PATH 255 39 +BEGIN + PROMPT 2 2 "Percorso file FATTURE da spedire " + DSELECT + FLAGS "M" + CHECKTYPE REQUIRED + WARNING "Selezionare una cartella valida!" + FIELD Esselunga_Path +END + +STRING F_E_PRIVATPATH 255 39 +BEGIN + PROMPT 2 3 "Percorso file PRIVAT da spedire " + DSELECT + FLAGS "M" + CHECKTYPE REQUIRED + WARNING "Selezionare una cartella valida!" + FIELD Esselunga_PrivatPath +END + + +STRING F_E_PIVA_HARDY 12 +BEGIN + PROMPT 2 4 "Partita IVA Hardy " + HELP "Partita IVA Hardy" + FIELD Esselunga_PIvaHardy +END + +STRING F_E_PIVA_ESSELUNGA 12 +BEGIN + PROMPT 2 5 "Partita IVA Esselunga " + HELP "Partita IVA Esselunga" + FIELD Esselunga_PIvaEsselunga +END + +NUMBER F_E_COD_HARDY 6 +BEGIN + PROMPT 2 6 "Cod. fornitore Hardy " + HELP "Codice fornitore Hardy presso Esselunga" + FIELD Esselunga_CodHardy +END + +NUMBER F_E_COD_ESSELUNGA 6 +BEGIN + PROMPT 2 7 "Cod. cliente Esselunga " + HELP "Codice cliente Esselunga presso Hardy" + FIELD Esselunga_CodEsselunga +END + +STRING F_E_TIPOEMISSIONE 2 +BEGIN + PROMPT 2 8 "Tipo Emissione " + HELP "Tipo emissione" + FIELD Esselunga_TipoEmissione +END + +DATE F_E_DATACONF +BEGIN + PROMPT 2 9 "Data di configurazione " + HELP "Data di configurazione " + FIELD Esselunga_DatConf +END + +ENDPAGE + + +//------------------------------------ +PAGE "Cartellini attrezzature" 0 2 0 0 + +GROUPBOX DLG_NULL 76 6 +BEGIN + PROMPT 1 1 "@bParametri documenti" +END + +STRING F_TIPO_DOC2ELAB 4 +BEGIN + PROMPT 2 2 "Tipo " + USE %TIP + INPUT CODTAB F_TIPO_DOC2ELAB + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_TIPO_DOC2ELAB CODTAB + OUTPUT F_TIPO_DOC2ELAB_DESCR S0 + FLAGS "U" + CHECKTYPE REQUIRED + FIELD Doc2ElabTip +END + +STRING F_TIPO_DOC2ELAB_DESCR 50 +BEGIN + PROMPT 20 2 "" + USE %TIP KEY 2 + INPUT S0 F_TIPO_DOC2ELAB_DESCR + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_TIPO_DOC2ELAB + CHECKTYPE NORMAL +END + +STRING F_STATO_DOC2ELAB 1 +BEGIN + PROMPT 2 3 "Stato " + USE %STD + INPUT CODTAB F_STATO_DOC2ELAB + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_STATO_DOC2ELAB CODTAB + OUTPUT F_STATO_DOC2ELAB_DESCR S0 + FLAGS "U" + CHECKTYPE REQUIRED + FIELD Doc2ElabSta +END + +STRING F_STATO_DOC2ELAB_DESCR 50 +BEGIN + PROMPT 20 3 "" + USE %STD KEY 2 + INPUT S0 F_STATO_DOC2ELAB_DESCR + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_STATO_DOC2ELAB + CHECKTYPE NORMAL +END + +STRING F_CAUSMAG_APERTURA 5 +BEGIN + PROMPT 2 4 "Causale apertura " + USE %CAU + INPUT CODTAB F_CAUSMAG_APERTURA + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CAUSMAG_APERTURA CODTAB + OUTPUT F_CAUSMAG_APERTURA_DESCR S0 + CHECKTYPE REQUIRED + FLAGS "U" + FIELD CausOpen +END + +STRING F_CAUSMAG_APERTURA_DESCR 50 46 +BEGIN + PROMPT 28 4 "" + USE %CAU KEY 2 + INPUT S0 F_CAUSMAG_APERTURA_DESCR + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_CAUSMAG_APERTURA + CHECKTYPE NORMAL +END + +STRING F_CAUSMAG_CHIUSURA 5 +BEGIN + PROMPT 2 5 "Causale chiusura " + COPY USE F_CAUSMAG_APERTURA + INPUT CODTAB F_CAUSMAG_CHIUSURA + COPY DISPLAY F_CAUSMAG_APERTURA + OUTPUT F_CAUSMAG_CHIUSURA CODTAB + OUTPUT F_CAUSMAG_CHIUSURA_DESCR S0 + CHECKTYPE REQUIRED + FLAGS "U" + FIELD CausClose +END + +STRING F_CAUSMAG_CHIUSURA_DESCR 50 46 +BEGIN + PROMPT 28 5 "" + COPY USE F_CAUSMAG_APERTURA_DESCR + INPUT S0 F_CAUSMAG_CHIUSURA_DESCR + COPY DISPLAY F_CAUSMAG_APERTURA_DESCR + COPY OUTPUT F_CAUSMAG_CHIUSURA + CHECKTYPE NORMAL +END + +ENDPAGE + +ENDMASK + +//-------------------------------------------------------------- +//maschera di riga dello sheet pagina trasferimenti (Codici iva) + +PAGE "Riga" -1 -1 64 4 + +NUMBER S_ALIQUOTA_IVA 6 2 +BEGIN + PROMPT 1 1 "% IVA@6" + FLAGS "U" + CHECKTYPE REQUIRED + FIELD IVAaliquota +END + +STRING S_CAMPO_CODIVA 4 +BEGIN + PROMPT 1 2 "Cod. IVA Campo " + USE %IVA + INPUT CODTAB S_CAMPO_CODIVA + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT S_CAMPO_CODIVA CODTAB + OUTPUT S_CAMPO_CODIVA_DES S0 + CHECKTYPE REQUIRED + FIELD IVAcodice +END + +STRING S_CAMPO_CODIVA_DES 50 +BEGIN + PROMPT 25 2 "" + USE %IVA KEY 2 + INPUT S0 S_CAMPO_CODIVA_DES + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT S_CAMPO_CODIVA + CHECKTYPE REQUIRED +END + +ENDPAGE + +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_OK 2 2 +BEGIN + PROMPT 1 1 "" +END + +BUTTON DLG_DELREC 2 2 +BEGIN + PROMPT 2 1 "" +END + +BUTTON DLG_CANCEL 2 2 +BEGIN + PROMPT 3 1 "" +END + +ENDPAGE + +ENDMASK diff --git a/ha/ha0300.cpp b/ha/ha0300.cpp index a8ce4ffb8..1dcba3601 100755 --- a/ha/ha0300.cpp +++ b/ha/ha0300.cpp @@ -17,6 +17,56 @@ ////////////////////////////////////////////// // Maschera ////////////////////////////////////////////// + +class TDocumenti_premio_query_msk : public TAutomask +{ +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + TDocumenti_premio_query_msk() : TAutomask("ha0300b") {} +}; + +bool TDocumenti_premio_query_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case F_TIPOCONTR: + if (e == fe_init || e == fe_modify) + { + //all'inizio deve proporre una lista dei possibili numerazioni e tipi che stanno in configurazione + TConfig config(CONFIG_DITTA, "ha"); + TString4 codnum, tipodoc; + + switch (o.get()[0]) + { + case 'A': + codnum = config.get("CoAntNum"); + tipodoc = config.get("CoAntTip"); + break; + case 'N': + codnum = config.get("CoNoloNum"); + tipodoc = config.get("CoNoloTip"); + break; + case 'R': + codnum = config.get("CoRifaNum"); + tipodoc = config.get("CoRifaTip"); + break; + default: + codnum = config.get("CoPostNum"); + tipodoc = config.get("CoPostTip"); + break; + } + + set(F_CODNUM, codnum); + set(F_TIPODOC, tipodoc); + } + default: + break; + } + + return true; +} class TDocumenti_premio_msk : public TAutomask { protected: @@ -27,13 +77,9 @@ protected: public: const TString& find_contabilizzazione() const; - TDocumenti_premio_msk(); + TDocumenti_premio_msk(const char* name = "ha0300a") : TAutomask(name) {} }; -TDocumenti_premio_msk::TDocumenti_premio_msk() : TAutomask("ha0300a") -{ -} - //metodo standard per far funzionare il shift+f12 in modo da poter cambiare lo stato bool TDocumenti_premio_msk::on_key(KEY key) { @@ -142,33 +188,6 @@ bool TDocumenti_premio_msk::on_field_event(TOperable_field& o, TField_event e, l { switch (o.dlg()) { - case F_TIPOCONTR: - if (e == fe_init || e == fe_modify) - { - //all'inizio deve proporre una lista dei possibili numerazioni e tipi che stanno in configurazione - TConfig config(CONFIG_DITTA, "ha"); - TString4 codnum, tipodoc; - - switch (o.get()[0]) - { - case 'A': - codnum = config.get("CoAntNum"); - tipodoc = config.get("CoAntTip"); - break; - case 'R': - codnum = config.get("CoRifaNum"); - tipodoc = config.get("CoRifaTip"); - break; - default: - codnum = config.get("CoPostNum"); - tipodoc = config.get("CoPostTip"); - break; - } - - set(F_CODNUM, codnum); - set(F_TIPODOC, tipodoc); - } - break; case S_CODART: if ((e == fe_init || e == fe_close) && !o.empty()) { @@ -226,16 +245,20 @@ bool TDocumenti_premio_msk::on_field_event(TOperable_field& o, TField_event e, l ////////////////////////////////////////////// // Applicazione ////////////////////////////////////////////// + class TDocumenti_premio : public TRelation_application { - TRelation* _rel; - TDocumenti_premio_msk* _msk; + TRelation* _rel; // Relazione principale su DOC + TDocumenti_premio_query_msk* _qmsk; // Maschera query + TDocumenti_premio_msk* _cmsk; // Maschera contratti "normali" + TDocumenti_premio_msk* _nmsk; // Maschera contratti noleggio protected: virtual bool user_create(); virtual bool user_destroy(); - virtual TMask* get_mask(int) {return _msk;} - virtual TRelation* get_relation() const {return _rel;} + virtual TMask* get_mask(int m); + virtual bool changing_mask(int) { return true; } + virtual TRelation* get_relation() const { return _rel; } void write_rows(const TMask& m); void read_rows(TMask& m); @@ -251,42 +274,46 @@ protected: virtual void init_modify_mode(TMask& m); }; +TMask* TDocumenti_premio::get_mask(int m) +{ + if (m < MODE_INS) + return _qmsk; + const TString& tipo = _qmsk->get(F_TIPOCONTR); + return tipo == "N" ? _nmsk : _cmsk; +} //cerca il primo numero valido per NDOC bool TDocumenti_premio::get_next_key(TToken_string& key) { - long n = 0; - + const TMask& m = curr_mask(); + const char provv = m.get(F_PROVV)[0]; + const int anno = m.get_int(F_ANNO); + const TString& codnum = m.get(F_CODNUM); + TLocalisamfile doc(LF_DOC); TRectype& curr = doc.curr(); - const char provv = _msk->get(F_PROVV)[0]; - const int anno = _msk->get_int(F_ANNO); - const TString4 codnum = _msk->get(F_CODNUM); - - curr.put(DOC_PROVV, provv); - curr.put(DOC_ANNO, anno); + curr.put(DOC_PROVV, provv); + curr.put(DOC_ANNO, anno); curr.put(DOC_CODNUM, codnum); - curr.put(DOC_NDOC, 9999999L); + curr.put(DOC_NDOC, 9999999L); - const int err = doc.read(_isgreat); - + long n = 1; + const int err = doc.read(_isgreat); if (err != _isemptyfile) { if (err == NOERR) doc.prev(); if (curr.get_char(DOC_PROVV) == provv && curr.get_int(DOC_ANNO) == anno && curr.get(DOC_CODNUM) == codnum) - n = curr.get_long(DOC_NDOC); + n += curr.get_long(DOC_NDOC); } - - n++; key.cut(0); - key.add(F_PROVV); key.add(provv); - key.add(F_ANNO); key.add(anno); - key.add(F_CODNUM); key.add(codnum); - key.add(F_NDOC); key.add(n); + key.add(F_PROVV); key.add(provv); + key.add(F_ANNO); key.add(anno); + key.add(F_CODNUM); key.add(codnum); + key.add(F_NDOC); key.add(n); - return n > 0; + return true; } void TDocumenti_premio::read_rows(TMask& m) @@ -323,7 +350,7 @@ void TDocumenti_premio::read_rows(TMask& m) TToken_string& row = sheet.row(-1); //aggiunge una riga vuota for (int j = sm.fields()-1; j >= 0; j--) //giro su tutti i campi della maschera di riga... { - TMask_field& mf = sm.fld(j); //aggiunge solo quelli che hanno un field + const TMask_field& mf = sm.fld(j); //aggiunge solo quelli che hanno un field if ((mf.field() != NULL) && (mf.dlg() > 100)) //> 100 per evitare errori sui campi dlg_null { const int idx = sheet.cid2index(mf.dlg()); @@ -334,12 +361,15 @@ void TDocumenti_premio::read_rows(TMask& m) //..in modalità fe_init) sheet.check_row(sheet.items()-1); } - else if (tipo == HARDY_TIPORIGA_SOMMA)//se invece è la riga con le somme anticipate/maturate (solo 1 per contratto!) -> va messa in testata + else if (tipo == HARDY_TIPORIGA_SOMMA) //se invece è la riga con le somme anticipate/maturate (solo 1 per contratto!) -> va messa in testata { - const real anticipato = rec.get(RCA_2_ANTICIPATO); - const real maturato = rec.get(RCA_2_RESO_STORICO); - m.set(F_ANTICIPATO, anticipato); - m.set(F_RESO_STORICO, maturato); + if (m.id2pos(F_ANTICIPATO) >= 0) + { + const real anticipato = rec.get(RCA_2_ANTICIPATO); + const real maturato = rec.get(RCA_2_RESO_STORICO); + m.set(F_ANTICIPATO, anticipato); + m.set(F_RESO_STORICO, maturato); + } } } //for (int i = 1;... } @@ -348,17 +378,16 @@ void TDocumenti_premio::read_rows(TMask& m) void TDocumenti_premio::write_rows(const TMask& m) { //chiave delle righe basata sui campi di testata - const char provv = m.get(F_PROVV)[0]; - const int anno = m.get_int(F_ANNO); + const char provv = m.get(F_PROVV)[0]; + const int anno = m.get_int(F_ANNO); const TString& codnum = m.get(F_CODNUM); - const long ndoc = m.get_long(F_NDOC); + const long ndoc = m.get_long(F_NDOC); TRectype* key_rec = new TRectype(LF_RIGHEDOC); - - key_rec->put(RDOC_PROVV, provv); - key_rec->put(RDOC_ANNO, anno); + key_rec->put(RDOC_PROVV, provv); + key_rec->put(RDOC_ANNO, anno); key_rec->put(RDOC_CODNUM, codnum); - key_rec->put(RDOC_NDOC, ndoc); + key_rec->put(RDOC_NDOC, ndoc); //recordarray con le righe che rispondono alla chiave di testata key_rec TRecord_array righedoc(LF_RIGHEDOC, RDOC_NRIGA); @@ -374,7 +403,7 @@ void TDocumenti_premio::write_rows(const TMask& m) TRectype& rec = righedoc.row(i+1, true); //record con l'elemento riga dell'array for (int i = sm.fields()-1; i >= 0; i--) //giro su tutti i campi della maschera di riga... { - TMask_field& mf = sm.fld(i); //aggiunge solo quelli che hanno un field + const TMask_field& mf = sm.fld(i); //aggiunge solo quelli che hanno un field if ((mf.dlg() > 100) && (mf.field() != NULL)) //> 100 per evitare errori sui campi dlg_null { const int idx = sheet.cid2index(mf.dlg()); @@ -383,41 +412,44 @@ void TDocumenti_premio::write_rows(const TMask& m) } rec.put(RDOC_TIPORIGA, HARDY_TIPORIGA_MERCE); } - //salva la riga di tipo somme anticipate/rimborsate (H02) che in realtà è in testata - //questo vale solo per i contratti di Anticip/Rifatturazione (lo fa solo se l'anticipo è > 0) + // salva la riga di tipo somme anticipate/rimborsate (H02) che in realtà è in testata + // questo vale solo per i contratti di Anticip/Rifatturazione (lo fa solo se l'anticipo è > 0) const char tipo_contr = m.get(F_TIPOCONTR)[0]; - const real anticipato = m.get_real(F_ANTICIPATO); - - if (anticipato > ZERO && (tipo_contr == 'A' || tipo_contr == 'R')) + if (tipo_contr == 'A' || tipo_contr == 'R') { - const int righedoc_items = righedoc.rows(); - TRectype& last_rec = righedoc.row(righedoc_items + 1, true); - - const real maturato = m.get_real(F_RESO_STORICO); - last_rec.put(RCA_2_ANTICIPATO, anticipato); - last_rec.put(RCA_2_RESO_STORICO, maturato); - last_rec.put(RDOC_TIPORIGA, HARDY_TIPORIGA_SOMMA); - last_rec.put(RDOC_QTA, 1); - - //panegirico sul codice iva (che ci va sennò col cavolo che si riesce a contabilizzare il contratto) - TString80 codspp; - switch (tipo_contr) + const real anticipato = m.get_real(F_ANTICIPATO); + if (anticipato > ZERO) { - case 'A': codspp = ini_get_string(CONFIG_DITTA, "ha", "CoAntSpe"); break; - case 'R': codspp = ini_get_string(CONFIG_DITTA, "ha", "CoRifaSpe"); break; - default: break; - } - last_rec.put(RDOC_CODART, codspp); + const int righedoc_items = righedoc.rows(); + TRectype& last_rec = righedoc.row(righedoc_items + 1, true); + + const real maturato = m.get_real(F_RESO_STORICO); + last_rec.put(RCA_2_ANTICIPATO, anticipato); + last_rec.put(RCA_2_RESO_STORICO, maturato); + last_rec.put(RDOC_TIPORIGA, HARDY_TIPORIGA_SOMMA); + last_rec.put(RDOC_QTA, 1); - //cerca se il cliente ha un'iva speciale (1 cliente su 1E+6, ma tant'è...) - TCli_for clifo(m.get(F_TIPOCF)[0], m.get_long(F_CODCF)); - TString4 codiva(clifo.vendite().get(CFV_ASSFIS)); - //per i restanti 1E+6 - 1 clienti... - if (codiva.blank()) - codiva = cache().get("SPP", codspp, "S3"); - last_rec.put(RDOC_CODIVA, codiva); + //panegirico sul codice iva (che ci va sennò col cavolo che si riesce a contabilizzare il contratto) + TString80 codspp; + switch (tipo_contr) + { + case 'A': codspp = ini_get_string(CONFIG_DITTA, "ha", "CoAntSpe"); break; + case 'R': codspp = ini_get_string(CONFIG_DITTA, "ha", "CoRifaSpe"); break; + default: break; + } + last_rec.put(RDOC_CODART, codspp); + + //cerca se il cliente ha un'iva speciale (1 cliente su 1E+6, ma tant'è...) + TCli_for clifo(m.get(F_TIPOCF)[0], m.get_long(F_CODCF)); + TString4 codiva(clifo.vendite().get(CFV_ASSFIS)); + //per i restanti 1E+6 - 1 clienti... + if (codiva.blank()) + codiva = cache().get("SPP", codspp, "S3"); + last_rec.put(RDOC_CODIVA, codiva); + } } + //e alla fine della fiera scrive tutto ufficialmente righedoc.rewrite(); } @@ -425,8 +457,6 @@ void TDocumenti_premio::write_rows(const TMask& m) void TDocumenti_premio::init_query_mode(TMask& m) { - m.disable(F_STATO); - m.disable(DLG_ELABORA); } void TDocumenti_premio::init_insert_mode(TMask& m) @@ -434,21 +464,30 @@ void TDocumenti_premio::init_insert_mode(TMask& m) //alla creazione di un nuovo contratto lo stato viene posto = 2 //questo x' il contratto è già stato stampato dal cliente in fase di stesura m.set(F_STATO, 2); - m.disable(DLG_ELABORA); + if (m.id2pos(DLG_ELABORA) >= 0) + m.disable(DLG_ELABORA); + + const TString& codpag = ini_get_string(CONFIG_DITTA, "ha", "CodPagNac", "015"); + m.set(F_CODPAG, codpag); } void TDocumenti_premio::init_modify_mode(TMask& m) { - m.disable(F_TIPOCONTR); //non si può cambiare il tipo contratto una volta stabilito sennò non funziona + un cazzo - m.enable(DLG_ELABORA, _msk->find_contabilizzazione().full()); + TDocumenti_premio_msk& dpm = (TDocumenti_premio_msk&)m; + + dpm.disable(F_TIPOCONTR); //non si può cambiare il tipo contratto una volta stabilito sennò non funziona + un cazzo + if (m.id2pos(DLG_ELABORA) >= 0) + dpm.enable(DLG_ELABORA, dpm.find_contabilizzazione().full()); } bool TDocumenti_premio::remove() { - TSheet_field& righe = _msk->sfield(F_RIGHE); - _msk->reset(F_ANTICIPATO); + TDocumenti_premio_msk& dpm = (TDocumenti_premio_msk&)curr_mask(); + TSheet_field& righe = dpm.sfield(F_RIGHE); + if (dpm.id2pos(F_ANTICIPATO) >= 0) + dpm.reset(F_ANTICIPATO); righe.destroy(); - write_rows(*_msk); + write_rows(dpm); return TRelation_application::remove(); } @@ -478,15 +517,19 @@ int TDocumenti_premio::read(TMask& m) bool TDocumenti_premio::user_create() { - _rel = new TRelation(LF_DOC); - _msk = new TDocumenti_premio_msk; + _rel = new TRelation(LF_DOC); + _qmsk = new TDocumenti_premio_query_msk; + _cmsk = new TDocumenti_premio_msk("ha0300a"); + _nmsk = new TDocumenti_premio_msk("ha0300c"); return true; } bool TDocumenti_premio::user_destroy() { + delete _nmsk; + delete _cmsk; + delete _qmsk; delete _rel; - delete _msk; return true; } diff --git a/ha/ha0300a.h b/ha/ha0300a.h index 1f6b32e95..a5feed8ee 100755 --- a/ha/ha0300a.h +++ b/ha/ha0300a.h @@ -34,6 +34,13 @@ #define F_ANTICIPATO 231 #define F_RESO_STORICO 232 +#define F_RESIDUO 233 +#define F_FREQUENZA 234 + +#define F_IMPRATA 235 +#define F_NRATE 236 +#define F_EMESSE 237 +#define F_DATARECESSO 238 #define F_RIGHE 500 //questo va messo 500 sennò ve0 si incazza e non funziona più diff --git a/ha/ha0300a.uml b/ha/ha0300a.uml index 33cfff169..a2005cbb2 100755 --- a/ha/ha0300a.uml +++ b/ha/ha0300a.uml @@ -1,500 +1,497 @@ -#include "ha0300a.h" - -TOOLBAR "" 0 0 0 2 - -#include - -BUTTON DLG_NULL 2 2 -BEGIN - PROMPT -1 1 "" -END - -BUTTON DLG_ELABORA 2 2 -BEGIN - PROMPT 3 1 "Contabilizza" - PICTURE TOOL_ELABORA -END - -#include - -ENDPAGE - -PAGE "Gestione contratti premio" -1 -1 78 23 - -GROUPBOX DLG_NULL 78 14 -BEGIN - PROMPT 1 0 "" -END - -TEXT DLG_NULL -BEGIN - PROMPT 1 1 "@bTipo contratto" -END - -RADIOBUTTON F_TIPOCONTR 1 70 -BEGIN - PROMPT 16 0 "" - ITEM "A|Anticipo" - MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS - ITEM "P|Posticipo" - MESSAGE ENABLE,F_DATAFCOMP|CLEAR,1@|ENABLE,F_CODLIS - ITEM "R|Rifatturazione" - MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS - FLAGS "GZ" - KEY 1 -END - -STRING F_CODNUM 4 -BEGIN - PROMPT 102 101 "Cod. num. " - FIELD CODNUM - USE %NUM KEY 1 - INPUT CODTAB F_CODNUM - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - CHECKTYPE NORMAL - FLAGS "GDU" - KEY 1 -END - -STRING F_TIPODOC 4 -BEGIN - FIELD TIPODOC - PROMPT 120 101 "Tipo doc. " - USE %TIP KEY 1 - INPUT CODTAB F_TIPODOC - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - CHECKTYPE NORMAL - FLAGS "GDU" -END - -LIST F_TIPOCF 9 -BEGIN - PROMPT 130 101 "" - FIELD TIPOCF - IT "C|Cliente" - FLAGS "D" -END - -NUMBER F_CODCF 6 -BEGIN - PROMPT 2 2 "Cliente " - WARNING "Cliente assente" - HELP "Codice del cliente del documento" - FIELD CODCF - USE LF_CLIFO SELECT (GRUPPO=4) && (CONTO=201) && (SOSPESO!="X") - INPUT TIPOCF "C" - INPUT CODCF F_CODCF - DISPLAY "Codice" CODCF - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Sospeso" SOSPESO - OUTPUT F_CODCF CODCF - OUTPUT F_DESCF RAGSOC - CHECKTYPE REQUIRED - ADD RUN cg0 -1 C -END - -STRING F_DESCF 50 -BEGIN - WARNING "Cliente assente" - HELP "Ragione sociale del cliente del documento" - PROMPT 24 2 "" - USE LF_CLIFO KEY 2 SELECT (GRUPPO=4) && (CONTO=201) && (SOSPESO!="X") - INPUT TIPOCF "C" - INPUT RAGSOC F_DESCF - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Codice" CODCF - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Sospeso" SOSPESO - COPY OUTPUT F_CODCF - CHECKTYPE REQUIRED - ADD RUN cg0 -1 C -END - -NUMBER F_CODCFATT 6 -BEGIN - PROMPT 2 3 "Cli. fatt." - WARNING "Inserire un codice >= 200000" - HELP "Codice del cliente cui fatturare >= 200000" - FIELD DOC2 - USE LF_CLIFO SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X") - INPUT TIPOCF "C" - INPUT CODCF F_CODCFATT - COPY DISPLAY F_CODCF - OUTPUT F_CODCFATT CODCF - OUTPUT F_DESCFATT RAGSOC - CHECKTYPE REQUIRED - ADD RUN cg0 -1 C -END - -STRING F_DESCFATT 50 -BEGIN - WARNING "Cliente assente" - HELP "Ragione sociale del cliente cui fatturare" - PROMPT 24 3 "" - USE LF_CLIFO KEY 2 SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X") - INPUT TIPOCF "C" - INPUT RAGSOC F_DESCFATT - COPY DISPLAY F_DESCF - COPY OUTPUT F_CODCFATT - CHECKTYPE SEARCH - ADD RUN cg0 -1 C -END - - -LIST F_PROVV 1 -BEGIN - PROMPT 140 101 "" - ITEM "D|D" - FIELD PROVV - FLAGS "D" - KEY 1 -END - -NUMBER F_ANNO 4 -BEGIN - PROMPT 2 4 "Esercizio " - USE ESC - INPUT CODTAB F_ANNO - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_ANNO CODTAB - FIELD ANNO - CHECKTYPE REQUIRED - FLAGS "A" - KEY 1 -END - -NUMBER F_NDOC 6 -BEGIN - PROMPT 24 4 "N. contr. premi " - USE LF_DOC SELECT BETWEEN(CODCF,#F_CODCF,#F_CODCF) - JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF - INPUT CODNUM F_CODNUM SELECT - INPUT PROVV F_PROVV SELECT - INPUT ANNO F_ANNO SELECT - INPUT NDOC F_NDOC - DISPLAY "Numero" NDOC - DISPLAY "Data doc.@10" DATADOC - DISPLAY "Inizio@10" DATACOMP - DISPLAY "Fine@10" DATAFCOMP - DISPLAY "Tipo" TIPODOC - DISPLAY "Agente" CODAG - DISPLAY "Cliente" CODCF - DISPLAY "Ragione sociale@50" LF_CLIFO->RAGSOC - OUPUT F_NDOC NDOC - FIELD NDOC - KEY 1 - CHECKTYPE REQUIRED -END - -DATE F_DATADOC -BEGIN - PROMPT 50 4 "Data " - FIELD DATADOC -END - -STRING F_STATO 1 -BEGIN - PROMPT 69 4 "Stato " - FIELD STATO - USE %STD KEY 1 - INPUT CODTAB F_STATO - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_STATO CODTAB - CHECKTYPE NORMAL - FLAGS "DG" -END - -STRING F_CODCONTR 3 -BEGIN - PROMPT 2 5 "Listino cliente " - USE CONDV - INPUT TIPO "C" - INPUT TIPOCF F_TIPOCF SELECT - INPUT CODCF F_CODCFATT SELECT - INPUT COD F_CODCONTR - DISPLAY "Codice" COD - DISPLAY "Descrizione@50" DESCR - DISPLAY "Inizio validita'" VALIN - DISPLAY "Fine validità" VALFIN - OUTPUT F_CODCONTR COD - OUTPUT F_DESCONTR DESCR - FIELD CODCONT - CHECKTYPE NORMAL -END - -STRING F_DESCONTR 50 -BEGIN - PROMPT 26 5 "" - FLAGS "DG" -END - -STRING F_CODLIS 3 -BEGIN - PROMPT 2 6 "Listino standard " - USE CONDV - INPUT TIPO "L" - INPUT COD F_CODLIS - DISPLAY "Codice" COD - DISPLAY "Descrizione@50" DESCR - DISPLAY "Inizio validita'" VALIN - DISPLAY "Fine validità" VALFIN - OUTPUT F_CODLIS COD - OUTPUT F_DESLIS DESCR - FIELD CODLIST - CHECKTYPE NORMAL -END - -STRING F_DESLIS 50 -BEGIN - PROMPT 26 6 "" - FLAGS "DG" -END - -STRING F_CODAG 5 -BEGIN - PROMPT 2 7 "Agente " - FIELD CODAG - USE LF_AGENTI - INPUT CODAGE F_CODAG - DISPLAY "Codice@8R" CODAGE - DISPLAY "Descrizione@50" RAGSOC - OUTPUT F_CODAG CODAGE - OUTPUT F_DESCRAG RAGSOC - CHECKTYPE NORMAL - FLAGS "UZ" -END - -STRING F_DESCRAG 50 -BEGIN - PROMPT 24 7 "" - USE LF_AGENTI KEY 2 - INPUT RAGSOC F_DESCRAG - DISPLAY "Descrizione@50" RAGSOC - DISPLAY "Codice@8R" CODAGE - COPY OUTPUT F_CODAG - CHECKTYPE NORMAL -END - -STRING F_CODPAG 4 -BEGIN - PROMPT 2 8 "Cond. pag. " - FIELD CODPAG - USE %CPG - INPUT CODTAB F_CODPAG - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CODPAG CODTAB - OUTPUT F_DESCRPAG S0 - CHECKTYPE NORMAL - FLAGS "U" - HE "Inserisci il codice del tipo di pagamento" - WA "Codice tipo pagamento non trovato" - ADD RUN ba3 -6 -END - -STRING F_DESCRPAG 50 -BEGIN - PROMPT 24 8 "" - USE %CPG KEY 2 - INPUT S0 F_DESCRPAG - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT F_CODPAG - CHECKTYPE NORMAL - HE "Inserisci il codice del tipo di pagamento" - WA "Codice tipo pagamento non trovato" - ADD RUN ba3 -6 -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 9 "Validita':" -END - -DATE F_DATACOMP -BEGIN - PROMPT 13 9 "Inizio " - FIELD DATACOMP - CHECKTYPE REQUIRED -END - -DATE F_DATAFCOMP -BEGIN - PROMPT 33 9 "Fine " - FIELD DATAFCOMP -END - -NUMBER F_NUMREG 7 -BEGIN - PROMPT 54 9 "N.reg.CG " - FIELD NUMREG - FLAGS "DUG" - MESSAGE EMPTY DISABLE,F_COLLEGA - MESSAGE ENABLE,F_COLLEGA -END - -BUTTON F_COLLEGA 2 1 -BEGIN - PROMPT 74 9 "CG mov." - PICTURE BMP_DARROWR - FLAGS "D" -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 10 "@bRiferimenti contratto" -END - -STRING F_DOCRIF 12 -BEGIN - PROMPT 31 10 "Codice " - FIELD DOC1 -END - -DATA F_DATA_DOCRIF -BEGIN - PROMPT 55 10 "Data " - FIELD DATADOCRIF -END - -GROUPBOX DLG_NULL 76 3 -BEGIN - PROMPT 2 11 "@bSomme anticipate/restituite" -END - -CURRENCY F_ANTICIPATO -BEGIN - PROMPT 3 12 "Anticipato " - FLAGS "U" - GROUP 1 -END - -CURRENCY F_RESO_STORICO -BEGIN - PROMPT 38 12 "Restituito " - GROUP 1 -END - -SPREADSHEET F_RIGHE -BEGIN - PROMPT 2 14 "" - ITEM "Codice Articolo@20" - ITEM "Descrizione@40" - ITEM "UM@2" - ITEM "Prezzo listino" - ITEM "Premio@10" - ITEM "Ns. carico" - ITEM "Bonus@10" -END - -ENDPAGE - -ENDMASK - -///////////////////////////////////////// -//maschera di riga -TOOLBAR "topbar" 0 0 0 2 - -BUTTON DLG_OK 2 2 -BEGIN - PROMPT 1 1 "" -END - -BUTTON DLG_DELREC 2 2 -BEGIN - PROMPT 2 1 "" -END - -BUTTON DLG_CANCEL 2 2 -BEGIN - PROMPT 3 1 "" -END - -ENDPAGE - -PAGE "Riga contratto premi Hardy" -1 -1 76 12 - -STRING S_CODART 20 -BEGIN - PROMPT 1 1 "Articolo " - USE LF_ANAMAG KEY 1 - INPUT CODART S_CODART - DISPLAY "Codice@20" CODART - DISPLAY "Descrizione@50" DESCR - OUTPUT S_CODART CODART - OUTPUT S_DESCR DESCR - CHECKTYPE REQUIRED - WARNING "Articolo assente" - FLAGS "U" - FIELD CODART - ADD RUN ve2 -3 -END - -STRING S_DESCR 50 -BEGIN - PROMPT 1 2 "Descrizione " - USE LF_ANAMAG KEY 2 - INPUT DESCR S_DESCR - DISPLAY "Descrizione@50" DESCR - DISPLAY "Codice@20" CODART - COPY OUTPUT S_CODART - FIELD DESCR - CHECKTYPE SEARCH -END - -STRING S_UMQTA 2 -BEGIN - PROMPT 1 3 "U.M. " - USE LF_UMART KEY 2 - JOIN %UMS INTO CODTAB=UM - INPUT CODART S_CODART SELECT - INPUT UM S_UMQTA - DISPLAY "Codice@20" UM - DISPLAY "Descrizione@50" %UMS->S0 - OUTPUT S_UMQTA UM - FIELD UMQTA - FLAGS "U" - CHECKTYPE REQUIRED -END - -GROUPBOX DLG_NULL 74 6 -BEGIN - PROMPT 1 4 "@bValori" -END - -CURRENCY S_PREZZO -BEGIN - PROMPT 2 5 "Prezzo listino " - FLAGS "UDG" - FIELD PREZZO -END - -CURRENCY S_PREMIO -BEGIN - PROMPT 2 6 "Premio " - FLAGS "U" - FIELD QTAGG1 -END - -CURRENCY S_RICARICO -BEGIN - PROMPT 2 7 "A Ns. carico " - FLAGS "U" - FIELD QTAGG2 -END - -CURRENCY S_MATURATO -BEGIN - PROMPT 2 8 "Bonus maturato " - FLAGS "DU" - FIELD QTAGG5 -END - -ENDPAGE - +#include "ha0300a.h" + +TOOLBAR "" 0 0 0 2 + +#include + +BUTTON DLG_NULL 2 2 +BEGIN + PROMPT -1 1 "" +END + +BUTTON DLG_ELABORA 2 2 +BEGIN + PROMPT 3 1 "Contabilizza" + PICTURE TOOL_ELABORA +END + +#include + +ENDPAGE + +PAGE "Gestione contratti premio" -1 -1 78 23 + +GROUPBOX DLG_NULL 78 15 +BEGIN + PROMPT 1 0 "" +END + +LIST F_TIPOCONTR 1 20 +BEGIN + PROMPT 2 1 "@bTipo contratto premio " + ITEM "A|Anticipo" + MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS + ITEM "P|Posticipo" + MESSAGE ENABLE,F_DATAFCOMP|CLEAR,1@|ENABLE,F_CODLIS + ITEM "R|Rifatturazione" + MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS +// ITEM "N|Noleggio" + FLAGS "DGZ" +END + +STRING F_CODNUM 4 +BEGIN + PROMPT 102 101 "Cod. num. " + FIELD CODNUM + USE %NUM KEY 1 + INPUT CODTAB F_CODNUM + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + CHECKTYPE NORMAL + FLAGS "GDU" + KEY 1 +END + +STRING F_TIPODOC 4 +BEGIN + FIELD TIPODOC + PROMPT 120 101 "Tipo doc. " + USE %TIP KEY 1 + INPUT CODTAB F_TIPODOC + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + CHECKTYPE NORMAL + FLAGS "GDU" +END + +LIST F_TIPOCF 9 +BEGIN + PROMPT 130 101 "" + FIELD TIPOCF + IT "C|Cliente" + FLAGS "D" +END + +NUMBER F_CODCF 6 +BEGIN + PROMPT 2 2 "Cliente " + WARNING "Cliente assente" + HELP "Codice del cliente del documento" + FIELD CODCF + USE LF_CLIFO SELECT SOSPESO!="X" + INPUT TIPOCF "C" + INPUT CODCF F_CODCF + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Sospeso" SOSPESO + OUTPUT F_CODCF CODCF + OUTPUT F_DESCF RAGSOC + CHECKTYPE REQUIRED + ADD RUN cg0 -1 C +END + +STRING F_DESCF 50 +BEGIN + WARNING "Cliente assente" + HELP "Ragione sociale del cliente del documento" + PROMPT 24 2 "" + USE LF_CLIFO KEY 2 SELECT SOSPESO!="X" + INPUT TIPOCF "C" + INPUT RAGSOC F_DESCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Sospeso" SOSPESO + COPY OUTPUT F_CODCF + CHECKTYPE REQUIRED + ADD RUN cg0 -1 C +END + +NUMBER F_CODCFATT 6 +BEGIN + PROMPT 2 3 "Cli. fatt." + USE LF_CLIFO SELECT (GRUPPO=4)&&(CONTO=101)&&(SOSPESO!="X") + INPUT TIPOCF "C" + INPUT CODCF F_CODCFATT + COPY DISPLAY F_CODCF + OUTPUT F_CODCFATT CODCF + OUTPUT F_DESCFATT RAGSOC + CHECKTYPE REQUIRED + ADD RUN cg0 -1 C + FIELD DOC2 + WARNING "Inserire un codice >= 200000" + HELP "Codice del cliente cui fatturare >= 200000" +END + +STRING F_DESCFATT 50 +BEGIN + PROMPT 24 3 "" + USE LF_CLIFO KEY 2 SELECT (GRUPPO=4)&&(CONTO=101)&&(SOSPESO!="X") + INPUT TIPOCF "C" + INPUT RAGSOC F_DESCFATT + COPY DISPLAY F_DESCF + COPY OUTPUT F_CODCFATT + CHECKTYPE SEARCH + ADD RUN cg0 -1 C + WARNING "Cliente assente" + HELP "Ragione sociale del cliente cui fatturare" +END + + +LIST F_PROVV 1 +BEGIN + PROMPT 140 101 "" + ITEM "D|D" + FIELD PROVV + FLAGS "D" + KEY 1 +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 2 4 "Esercizio " + FIELD ANNO + CHECKTYPE REQUIRED + FLAGS "AD" + KEY 1 +END + +NUMBER F_NDOC 6 +BEGIN + PROMPT 24 4 "N. contr. premi " + FIELD NDOC + CHECKTYPE REQUIRED + KEY 1 + FLAGS "D" +END + +DATE F_DATADOC +BEGIN + PROMPT 50 4 "Data " + FIELD DATADOC +END + +STRING F_STATO 1 +BEGIN + PROMPT 69 4 "Stato " + FIELD STATO + USE %STD KEY 1 + INPUT CODTAB F_STATO + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_STATO CODTAB + CHECKTYPE NORMAL + FLAGS "DG" +END + +STRING F_CODCONTR 3 +BEGIN + PROMPT 2 5 "Listino cliente " + USE CONDV + INPUT TIPO "C" + INPUT TIPOCF F_TIPOCF SELECT + INPUT CODCF F_CODCFATT SELECT + INPUT COD F_CODCONTR + DISPLAY "Codice" COD + DISPLAY "Descrizione@50" DESCR + DISPLAY "Inizio validità" VALIN + DISPLAY "Fine validità" VALFIN + OUTPUT F_CODCONTR COD + OUTPUT F_DESCONTR DESCR + FIELD CODCONT + CHECKTYPE NORMAL +END + +STRING F_DESCONTR 50 +BEGIN + PROMPT 26 5 "" + FLAGS "DG" +END + +STRING F_CODLIS 3 +BEGIN + PROMPT 2 6 "Listino standard " + USE CONDV + INPUT TIPO "L" + INPUT COD F_CODLIS + DISPLAY "Codice" COD + DISPLAY "Descrizione@50" DESCR + DISPLAY "Inizio validità" VALIN + DISPLAY "Fine validità" VALFIN + OUTPUT F_CODLIS COD + OUTPUT F_DESLIS DESCR + FIELD CODLIST + CHECKTYPE NORMAL +END + +STRING F_DESLIS 50 +BEGIN + PROMPT 26 6 "" + FLAGS "DG" +END + +STRING F_CODAG 5 +BEGIN + PROMPT 2 7 "Agente " + FIELD CODAG + USE LF_AGENTI + INPUT CODAGE F_CODAG + DISPLAY "Codice@8R" CODAGE + DISPLAY "Descrizione@50" RAGSOC + OUTPUT F_CODAG CODAGE + OUTPUT F_DESCRAG RAGSOC + CHECKTYPE NORMAL + FLAGS "UZ" +END + +STRING F_DESCRAG 50 +BEGIN + PROMPT 24 7 "" + USE LF_AGENTI KEY 2 + INPUT RAGSOC F_DESCRAG + DISPLAY "Descrizione@50" RAGSOC + DISPLAY "Codice@8R" CODAGE + COPY OUTPUT F_CODAG + CHECKTYPE NORMAL +END + +STRING F_CODPAG 4 +BEGIN + PROMPT 2 8 "Cond. pag. " + FIELD CODPAG + USE %CPG + INPUT CODTAB F_CODPAG + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODPAG CODTAB + OUTPUT F_DESCRPAG S0 + CHECKTYPE NORMAL + FLAGS "U" + HE "Inserisci il codice del tipo di pagamento" + WA "Codice tipo pagamento non trovato" + ADD RUN ba3 -6 +END + +STRING F_DESCRPAG 50 +BEGIN + PROMPT 24 8 "" + USE %CPG KEY 2 + INPUT S0 F_DESCRPAG + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_CODPAG + CHECKTYPE NORMAL + HE "Inserisci il codice del tipo di pagamento" + WA "Codice tipo pagamento non trovato" + ADD RUN ba3 -6 +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 9 "@bValidità: " +END + +DATE F_DATACOMP +BEGIN + PROMPT 13 9 "Inizio " + FIELD DATACOMP + CHECKTYPE REQUIRED +END + +DATE F_DATAFCOMP +BEGIN + PROMPT 33 9 "Fine " + FIELD DATAFCOMP +END + +NUMBER F_NUMREG 7 +BEGIN + PROMPT 54 9 "N.reg.CG " + FIELD NUMREG + FLAGS "DUG" + MESSAGE EMPTY DISABLE,F_COLLEGA + MESSAGE ENABLE,F_COLLEGA +END + +BUTTON F_COLLEGA 2 1 +BEGIN + PROMPT 74 9 "CG mov." + PICTURE BMP_DARROWR + FLAGS "D" +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 10 "@bRiferimenti contratto" +END + +STRING F_DOCRIF 12 +BEGIN + PROMPT 31 10 "Codice " + FIELD DOC1 +END + +DATA F_DATA_DOCRIF +BEGIN + PROMPT 55 10 "Data " + FIELD DATADOCRIF +END + +LIST F_FREQUENZA 1 15 +BEGIN + PROMPT 2 11 "Generazione NAC a frequenza " + ITEM "A|Annuale" + ITEM "S|Semestrale" + ITEM "T|Trimestrale" + ITEM " | " + FIELD CATVEN +END + +GROUPBOX DLG_NULL 76 3 +BEGIN + PROMPT 2 12 "@bSomme anticipate/restituite" +END + +CURRENCY F_ANTICIPATO 12 +BEGIN + PROMPT 3 13 "Anticipato " + GROUP 1 +END + +CURRENCY F_RESO_STORICO 12 +BEGIN + PROMPT 30 13 "Restituito " + GROUP 1 +END + +NUMERO F_RESIDUO 12 2 +BEGIN + PROMPT 56 13 "Residuo " + VALIDATE 14 1 #231-#232 + FLAGS "GD" + DRIVENBY 231 232 +END + +SPREADSHEET F_RIGHE +BEGIN + PROMPT 2 15 "" + ITEM "Articolo@20" + ITEM "Descrizione@40" + ITEM "UM@2" + ITEM "Prezzo listino" + ITEM "Premio@10" + ITEM "Ns. carico" + ITEM "Bonus@10" +END + +ENDPAGE + +ENDMASK + +///////////////////////////////////////// +//maschera di riga +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_OK 2 2 +BEGIN + PROMPT 1 1 "" +END + +BUTTON DLG_DELREC 2 2 +BEGIN + PROMPT 2 1 "" +END + +BUTTON DLG_CANCEL 2 2 +BEGIN + PROMPT 3 1 "" +END + +ENDPAGE + +PAGE "Riga contratto premi Hardy" -1 -1 76 12 + +STRING S_CODART 20 +BEGIN + PROMPT 1 1 "Articolo " + USE LF_ANAMAG + JOIN LF_UMART INTO CODART==CODART NRIGA=1 + INPUT CODART S_CODART + DISPLAY "Codice@20" CODART + DISPLAY "U.M." LF_UMART->UM + DISPLAY "Descrizione@50" DESCR + OUTPUT S_CODART CODART + OUTPUT S_DESCR DESCR + CHECKTYPE REQUIRED + WARNING "Articolo assente" + FLAGS "U" + FIELD CODART + ADD RUN ve2 -3 +END + +STRING S_DESCR 50 +BEGIN + PROMPT 1 2 "Descrizione " + USE LF_ANAMAG KEY 2 + JOIN LF_UMART INTO CODART==CODART NRIGA=1 + INPUT DESCR S_DESCR + DISPLAY "Descrizione@50" DESCR + DISPLAY "Codice@20" CODART + DISPLAY "U.M." LF_UMART->UM + COPY OUTPUT S_CODART + FIELD DESCR + CHECKTYPE SEARCH +END + +STRING S_UMQTA 2 +BEGIN + PROMPT 1 3 "U.M. " + USE LF_UMART KEY 2 + JOIN %UMS INTO CODTAB=UM + INPUT CODART S_CODART SELECT + INPUT UM S_UMQTA + DISPLAY "Codice@20" UM + DISPLAY "Descrizione@50" %UMS->S0 + OUTPUT S_UMQTA UM + FIELD UMQTA + FLAGS "U" + CHECKTYPE REQUIRED +END + +GROUPBOX DLG_NULL 74 6 +BEGIN + PROMPT 1 4 "@bValori" +END + +CURRENCY S_PREZZO +BEGIN + PROMPT 2 5 "Prezzo listino " + FLAGS "UDG" + FIELD PREZZO +END + +CURRENCY S_PREMIO +BEGIN + PROMPT 2 6 "Premio " + FLAGS "U" + FIELD QTAGG1 +END + +CURRENCY S_RICARICO +BEGIN + PROMPT 2 7 "A Ns. carico " + FLAGS "U" + FIELD QTAGG2 +END + +CURRENCY S_MATURATO +BEGIN + PROMPT 2 8 "Bonus maturato " + FLAGS "DU" + FIELD QTAGG5 +END + +ENDPAGE + ENDMASK \ No newline at end of file diff --git a/ha/ha0300b.uml b/ha/ha0300b.uml new file mode 100644 index 000000000..d7fd60084 --- /dev/null +++ b/ha/ha0300b.uml @@ -0,0 +1,145 @@ +#include "ha0300a.h" + +TOOLBAR "" 0 0 0 2 + +#include + +ENDPAGE + +PAGE "Gestione contratti premio" -1 -1 78 23 + +RADIOBUTTON F_TIPOCONTR 1 78 +BEGIN + PROMPT 1 0 "@bTipo Contratto" + ITEM "A|Anticipo" + ITEM "P|Posticipo" + ITEM "R|Rifatturazione" + ITEM "N|Noleggio" + FLAGS "GZ" +END + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 1 3 "" +END + +STRING F_CODNUM 4 +BEGIN + PROMPT 2 4 "Cod. num. " + FIELD CODNUM + USE %NUM KEY 1 + INPUT CODTAB F_CODNUM + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + CHECKTYPE NORMAL + FLAGS "GDU" + KEY 1 +END + +STRING F_TIPODOC 4 +BEGIN + FIELD TIPODOC + PROMPT 24 4 "Tipo doc. " + USE %TIP KEY 1 + INPUT CODTAB F_TIPODOC + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + CHECKTYPE NORMAL + FLAGS "GDU" +END + +LIST F_PROVV 1 +BEGIN + PROMPT 140 101 "" + ITEM "D|D" + FIELD PROVV + FLAGS "D" + KEY 1 +END + +LIST F_TIPOCF 9 +BEGIN + PROMPT 130 101 "" + FIELD TIPOCF + IT "C|Cliente" + FLAGS "D" +END + +NUMBER F_CODCF 6 +BEGIN + PROMPT 2 5 "Cliente " + FIELD CODCF + USE LF_CLIFO SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X") + INPUT TIPOCF "C" + INPUT CODCF F_CODCF + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Sospeso" SOSPESO + OUTPUT F_CODCF CODCF + OUTPUT F_DESCF RAGSOC + CHECKTYPE REQUIRED + ADD RUN cg0 -1 C + WARNING "Cliente assente" + HELP "Codice del cliente del contratto" +END + +STRING F_DESCF 50 +BEGIN + PROMPT 24 5 "" + USE LF_CLIFO KEY 2 SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X") + INPUT TIPOCF "C" + INPUT RAGSOC F_DESCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Sospeso" SOSPESO + COPY OUTPUT F_CODCF + CHECKTYPE REQUIRED + ADD RUN cg0 -1 C + WARNING "Cliente assente" + HELP "Ragione sociale del cliente del contratto" +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 2 6 "Esercizio " + USE ESC + INPUT CODTAB F_ANNO + DISPLAY "Codice" CODTAB + DISPLAY "Inizio esercizio" D0 + DISPLAY "Fine esercizio" D1 + OUTPUT F_ANNO CODTAB + FIELD ANNO + CHECKTYPE REQUIRED + FLAGS "AZ" + KEY 1 +END + +NUMBER F_NDOC 6 +BEGIN + PROMPT 24 6 "N. contratto " + USE LF_DOC KEY 5 SELECT (BETWEEN(DOC2,#F_CODCF,#F_CODCF))&&(TIPODOC==#F_TIPODOC) + JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==DOC2 + INPUT PROVV "D" + INPUT CODNUM F_CODNUM SELECT + INPUT ANNO F_ANNO + INPUT NDOC F_NDOC + DISPLAY "Numero" NDOC + DISPLAY "Data doc.@10" DATADOC + DISPLAY "Inizio@10" DATACOMP + DISPLAY "Fine@10" DATAFCOMP + DISPLAY "Tipo" TIPODOC + DISPLAY "Agente" CODAG + DISPLAY "Cliente" DOC2 + DISPLAY "Ragione sociale@50" LF_CLIFO->RAGSOC + OUPUT F_ANNO ANNO + OUPUT F_NDOC NDOC + FIELD NDOC + KEY 1 + CHECKTYPE REQUIRED +END + +ENDPAGE + +ENDMASK diff --git a/ha/ha0300c.uml b/ha/ha0300c.uml new file mode 100644 index 000000000..6486c8a39 --- /dev/null +++ b/ha/ha0300c.uml @@ -0,0 +1,451 @@ +#include "ha0300a.h" + +TOOLBAR "" 0 0 0 2 + +#include + +ENDPAGE + +PAGE "Gestione contratti premio" -1 -1 78 23 + +GROUPBOX DLG_NULL 78 15 +BEGIN + PROMPT 1 0 "" +END + +LIST F_TIPOCONTR 1 20 +BEGIN + PROMPT 2 1 "@bTipo contratto premio " +// ITEM "A|Anticipo" +// ITEM "P|Posticipo" +// ITEM "R|Rifatturazione" + ITEM "N|Noleggio" + FLAGS "DGZ" +END + +STRING F_CODNUM 4 +BEGIN + PROMPT 102 101 "Cod. num. " + FIELD CODNUM + USE %NUM KEY 1 + INPUT CODTAB F_CODNUM + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + CHECKTYPE NORMAL + FLAGS "GDU" + KEY 1 +END + +STRING F_TIPODOC 4 +BEGIN + FIELD TIPODOC + PROMPT 120 101 "Tipo doc. " + USE %TIP KEY 1 + INPUT CODTAB F_TIPODOC + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + CHECKTYPE NORMAL + FLAGS "GDU" +END + +LIST F_TIPOCF 9 +BEGIN + PROMPT 130 101 "" + FIELD TIPOCF + IT "C|Cliente" + FLAGS "D" +END + +NUMBER F_CODCF 6 +BEGIN + PROMPT 2 2 "Cliente " + FIELD CODCF + FLAGS "D" +END + +STRING F_DESCF 50 +BEGIN + PROMPT 24 2 "" + FLAGS "D" +END + +NUMBER F_CODCFATT 6 +BEGIN + PROMPT 2 3 "Cli. fatt." + USE LF_CLIFO SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X") + INPUT TIPOCF "C" + INPUT CODCF F_CODCFATT + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Sospeso" SOSPESO + OUTPUT F_CODCFATT CODCF + OUTPUT F_DESCFATT RAGSOC + OUTPUT F_CODCF CODCF + OUTPUT F_DESCF RAGSOC + CHECKTYPE REQUIRED + ADD RUN cg0 -1 C + FIELD DOC2 +END + +STRING F_DESCFATT 50 +BEGIN + PROMPT 24 3 "" + USE LF_CLIFO KEY 2 SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X") + INPUT TIPOCF "C" + INPUT RAGSOC F_DESCFATT + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Sospeso" SOSPESO + COPY OUTPUT F_CODCFATT + CHECKTYPE SEARCH + ADD RUN cg0 -1 C +END + +LIST F_PROVV 1 +BEGIN + PROMPT 140 101 "" + ITEM "D|D" + FIELD PROVV + FLAGS "D" + KEY 1 +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 2 4 "Esercizio " + FIELD ANNO + CHECKTYPE REQUIRED + FLAGS "DZ" + KEY 1 +END + +NUMBER F_NDOC 6 +BEGIN + PROMPT 24 4 "N. contr. premi " + FLAGS "D" + FIELD NDOC + CHECKTYPE REQUIRED + KEY 1 +END + +DATE F_DATADOC +BEGIN + PROMPT 50 4 "Data " + FIELD DATADOC +END + +STRING F_STATO 1 +BEGIN + PROMPT 69 4 "Stato " + FIELD STATO + USE %STD + INPUT CODTAB F_STATO + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_STATO CODTAB + CHECKTYPE NORMAL + FLAGS "D" +END + +STRING F_CODCONTR 3 +BEGIN + PROMPT 2 5 "Listino cliente " + USE CONDV + INPUT TIPO "C" + INPUT TIPOCF F_TIPOCF SELECT + INPUT CODCF F_CODCFATT SELECT + INPUT COD F_CODCONTR + DISPLAY "Codice" COD + DISPLAY "Descrizione@50" DESCR + DISPLAY "Inizio validità" VALIN + DISPLAY "Fine validità" VALFIN + OUTPUT F_CODCONTR COD + OUTPUT F_DESCONTR DESCR + FIELD CODCONT + CHECKTYPE NORMAL +END + +STRING F_DESCONTR 50 +BEGIN + PROMPT 26 5 "" + FLAGS "DG" +END + +STRING F_CODLIS 3 +BEGIN + PROMPT 2 6 "Listino standard " + USE CONDV + INPUT TIPO "L" + INPUT COD F_CODLIS + DISPLAY "Codice" COD + DISPLAY "Descrizione@50" DESCR + DISPLAY "Inizio validità" VALIN + DISPLAY "Fine validità" VALFIN + OUTPUT F_CODLIS COD + OUTPUT F_DESLIS DESCR + FIELD CODLIST + CHECKTYPE NORMAL +END + +STRING F_DESLIS 50 +BEGIN + PROMPT 26 6 "" + FLAGS "DG" +END + +STRING F_CODAG 5 +BEGIN + PROMPT 2 7 "Agente " + FIELD CODAG + USE LF_AGENTI + INPUT CODAGE F_CODAG + DISPLAY "Codice@8R" CODAGE + DISPLAY "Descrizione@50" RAGSOC + OUTPUT F_CODAG CODAGE + OUTPUT F_DESCRAG RAGSOC + CHECKTYPE NORMAL + FLAGS "UZ" +END + +STRING F_DESCRAG 50 +BEGIN + PROMPT 24 7 "" + USE LF_AGENTI KEY 2 + INPUT RAGSOC F_DESCRAG + DISPLAY "Descrizione@50" RAGSOC + DISPLAY "Codice@8R" CODAGE + COPY OUTPUT F_CODAG + CHECKTYPE NORMAL +END + +STRING F_CODPAG 4 +BEGIN + PROMPT 2 8 "Cond. pag. " + FIELD CODPAG + USE %CPG + INPUT CODTAB F_CODPAG + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODPAG CODTAB + OUTPUT F_DESCRPAG S0 + CHECKTYPE NORMAL + FLAGS "U" + HE "Inserire il codice del tipo di pagamento" + WA "Codice tipo pagamento non trovato" + ADD RUN ba3 -6 +END + +STRING F_DESCRPAG 50 +BEGIN + PROMPT 24 8 "" + USE %CPG KEY 2 + INPUT S0 F_DESCRPAG + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_CODPAG + CHECKTYPE NORMAL + HE "Inserire il codice del tipo di pagamento" + WA "Codice tipo pagamento non trovato" + ADD RUN ba3 -6 +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 9 "@bValidità: " +END + +DATE F_DATACOMP +BEGIN + PROMPT 14 9 "Inizio " + FIELD DATACOMP + CHECKTYPE REQUIRED +END + +DATE F_DATAFCOMP +BEGIN + PROMPT 36 9 "Fine " + FIELD DATAFCOMP + CHECKTYPE REQUIRED +END + +DATE F_DATARECESSO +BEGIN + PROMPT 56 9 "Recesso " + FIELD DATASCIMP +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 10 "@bRiferimenti contratto" +END + +STRING F_DOCRIF 12 +BEGIN + PROMPT 32 10 "Codice " + FIELD DOC1 +END + +DATA F_DATA_DOCRIF +BEGIN + PROMPT 59 10 "Data " + FIELD DATADOCRIF +END + +LIST F_FREQUENZA 1 15 +BEGIN + PROMPT 2 11 "Generazione NAC a frequenza " + ITEM "M|Mensile" + FIELD CATVEN + FLAGS "D" +END + +GROUPBOX DLG_NULL 76 3 +BEGIN + PROMPT 2 12 "@bRateizzazione" +END + +CURRENCY F_IMPRATA 10 +BEGIN + PROMPT 3 13 "Importo rata " + FIELD IMPPAGATO + CHECKTYPE REQUIRED +END + +NUMBER F_NRATE 3 +BEGIN + PROMPT 35 13 "Numero rate " + FIELD NCOLLI + CHECKTYPE REQUIRED +END + +NUMBER F_EMESSE 3 +BEGIN + PROMPT 60 13 "Rate emesse " + FIELD NUMANT + FLAGS "D" +END + +SPREADSHEET F_RIGHE +BEGIN + PROMPT 2 15 "" + ITEM "Articolo@20" + ITEM "Descrizione@40" + ITEM "UM@2" + ITEM "Prezzo listino" + ITEM "Premio@10" + ITEM "Ns. carico" + ITEM "Bonus@10" +END + +ENDPAGE + +ENDMASK + +///////////////////////////////////////// +//maschera di riga +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_OK 2 2 +BEGIN + PROMPT 1 1 "" +END + +BUTTON DLG_DELREC 2 2 +BEGIN + PROMPT 2 1 "" +END + +BUTTON DLG_CANCEL 2 2 +BEGIN + PROMPT 3 1 "" +END + +ENDPAGE + +PAGE "Riga contratto premi Hardy" -1 -1 76 12 + +STRING S_CODART 20 +BEGIN + PROMPT 1 1 "Articolo " + USE LF_ANAMAG + JOIN LF_UMART INTO CODART==CODART NRIGA=1 + INPUT CODART S_CODART + DISPLAY "Codice@20" CODART + DISPLAY "U.M." LF_UMART->UM + DISPLAY "Descrizione@50" DESCR + OUTPUT S_CODART CODART + OUTPUT S_DESCR DESCR + CHECKTYPE REQUIRED + WARNING "Articolo assente" + FLAGS "U" + FIELD CODART + ADD RUN ve2 -3 +END + +STRING S_DESCR 50 +BEGIN + PROMPT 1 2 "Descrizione " + USE LF_ANAMAG KEY 2 + JOIN LF_UMART INTO CODART==CODART NRIGA=1 + INPUT DESCR S_DESCR + DISPLAY "Descrizione@50" DESCR + DISPLAY "Codice@20" CODART + DISPLAY "U.M." LF_UMART->UM + COPY OUTPUT S_CODART + FIELD DESCR + CHECKTYPE SEARCH +END + +STRING S_UMQTA 2 +BEGIN + PROMPT 1 3 "U.M. " + USE LF_UMART KEY 2 + JOIN %UMS INTO CODTAB=UM + INPUT CODART S_CODART SELECT + INPUT UM S_UMQTA + DISPLAY "Codice@20" UM + DISPLAY "Descrizione@50" %UMS->S0 + OUTPUT S_UMQTA UM + FIELD UMQTA + FLAGS "U" + CHECKTYPE REQUIRED +END + +GROUPBOX DLG_NULL 74 6 +BEGIN + PROMPT 1 4 "@bValori" +END + +CURRENCY S_PREZZO +BEGIN + PROMPT 2 5 "Prezzo listino " + FLAGS "UDG" + FIELD PREZZO +END + +CURRENCY S_PREMIO +BEGIN + PROMPT 2 6 "Premio " + FLAGS "U" + FIELD QTAGG1 +END + +CURRENCY S_RICARICO +BEGIN + PROMPT 2 7 "A Ns. carico " + FLAGS "U" + FIELD QTAGG2 +END + +CURRENCY S_MATURATO +BEGIN + PROMPT 2 8 "Bonus maturato " + FLAGS "DU" + FIELD QTAGG5 +END + +ENDPAGE + +ENDMASK \ No newline at end of file diff --git a/ha/ha0500.cpp b/ha/ha0500.cpp index 84c45f7b5..48acc3e63 100755 --- a/ha/ha0500.cpp +++ b/ha/ha0500.cpp @@ -8,6 +8,8 @@ #include #include #include "../cg/cglib01.h" +#include "../cg/cgsaldac.h" +#include "../ef/ef0101.h" #include "../ve/velib.h" #include "halib.h" @@ -106,7 +108,6 @@ bool THardy_elab_docs_mask::on_field_event(TOperable_field& o, TField_event e, l /////////////////////////////////////// class THardy_elab_docs : public TSkeleton_application { - protected: //metodi alto livello void elabora(const TMask& mask); @@ -117,17 +118,19 @@ protected: //metodi medio livello bool aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log); bool elabora_contratti(TDocumento& curr_doc, TArray& contratti_cliente, const TDate& data_fine, TLog_report& log); - bool genera_nac(const TMask& mask, TArray& contratti_cliente, TArray& documenti_cliente, TLog_report& log); - + bool genera_nac(const TMask& mask, TArray& contratti_cliente, TAssoc_array& nac_nolo, TLog_report& log); + bool genera_fat(const TMask& mask, TContratto_premi& contratto, TToken_string& nakey, TLog_report& log); + bool genera_eff(const TDocumento& fat, const real& tot_nac, TLog_report& log); + //metodi basso livello - int find_contratti_cliente(const long codcfatt, const TMask& mask, TArray& contratti_cliente); + int find_contratti_cliente(const long codcfatt, const TMask& mask, int flags, TArray& contratti_cliente); void check_date(const TDate& datafine, TDate& dataini); int find_numerazioni(const TString& tipo_to_elab, TString_array& num_doc); + int month_diff(const TDate& inizio, const TDate& fine) const; public: virtual void main_loop(); virtual bool create(); - }; //metodo per ricavare la data iniziale di elaborazione qualora l'utonto non la metta e l'esercizio da usare @@ -166,40 +169,42 @@ int THardy_elab_docs::find_numerazioni(const TString& tipo_to_elab, TString_arra //metodo per accoppare tutte le NAC provvisorie generate in precedenza int THardy_elab_docs::kill_provv_nac(const TMask& mask) { - int nac_killed = 0; const TDate& adata = mask.get_date(F_ADATA); - int anno = adata.year(); + const int anno = adata.year(); TConfig config(CONFIG_DITTA, "ha"); - TToken_string numerazioni; numerazioni.add(config.get("NaAntNum")); - numerazioni.add(config.get("NaRifaNum")); + numerazioni.add(config.get("NaNoloNum")); numerazioni.add(config.get("NaPostNum")); + numerazioni.add(config.get("NaRifaNum")); - FOR_EACH_TOKEN(numerazioni, codnum) + int nac_killed = 0; + + TRelation rel_doc(LF_DOC); + TRectype& rec = rel_doc.curr(); + + FOR_EACH_TOKEN(numerazioni, codnum) if (*codnum > ' ') { - TRelation rel_doc(LF_DOC); - - TRectype& rec = rel_doc.curr(); - rec.put(DOC_PROVV, "P"); - rec.put(DOC_ANNO, anno); + rec.zero(); + rec.put(DOC_PROVV, 'P'); + rec.put(DOC_ANNO, anno); rec.put(DOC_CODNUM, codnum); TCursor cur_doc (&rel_doc, "", 1, &rec, &rec); - const long items = cur_doc.items(); + const TRecnotype items = cur_doc.items(); cur_doc.freeze(); - TProgind progind(items, "Eliminazione NAC provvisorie in corso...", false, true); - + TProgind progind(items, TR("Eliminazione NAC provvisorie in corso...")); for (cur_doc = 0; cur_doc.pos() < items; ++cur_doc) { - progind.addstatus(1); + if (!progind.addstatus(1)) + break; TDocumento doc(rec); - int err = doc.remove(); - if (err == NOERR) + if (doc.remove() == NOERR) nac_killed++; } } + return nac_killed; } @@ -276,43 +281,59 @@ long THardy_elab_docs::genera_recordset(const TMask& mask, TISAM_recordset& recs } //metodo che riempie un array con tutti i contratti del cliente passatogli (in base alla tipologia di contratti da elaborare) -int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& mask, TArray& contratti_cliente) +int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& mask, int flags, TArray& contratti_cliente) { contratti_cliente.destroy(); + const TDate data_fine_elab = mask.get_date(F_ADATA); + TDate data_ini_elab = mask.get_date(F_DADATA); + if (!data_ini_elab.ok()) + check_date(data_fine_elab, data_ini_elab); + //settaggio delle variabili //il codice numerazione lo trova nella configurazione Hardy, e lo deve scegliere in base alla tipologia di contratti che sta esaminando! - TConfig config(CONFIG_DITTA, "ha"); - - const TString4 tip_ant = config.get("CoAntTip"); - const TString4 tip_rifa = config.get("CoRifaTip"); - const TString4 tip_post = config.get("CoPostTip"); - - TAssoc_array cod_num_cont; - cod_num_cont.add(config.get("CoAntNum")); - cod_num_cont.add(config.get("CoRifaNum")); - cod_num_cont.add(config.get("CoPostNum")); - - FOR_EACH_ASSOC_OBJECT(cod_num_cont, h, k, o) + for (int f = 0; f < 4; f++) if (flags & (1 << f)) { - const TString& agente = mask.get(F_CODAGE); + TString4 codnum, tipodoc; + switch (f) + { + case 0: + codnum = ini_get_string(CONFIG_DITTA, "ha", "CoAntNum"); + tipodoc = ini_get_string(CONFIG_DITTA, "ha", "CoAntTip"); + break; + case 1: + codnum = ini_get_string(CONFIG_DITTA, "ha", "CoRifaNum"); + tipodoc = ini_get_string(CONFIG_DITTA, "ha", "CoRifaTip"); + break; + case 2: + codnum = ini_get_string(CONFIG_DITTA, "ha", "CoPostNum"); + tipodoc = ini_get_string(CONFIG_DITTA, "ha", "CoPostTip"); + break; + case 3: + codnum = ini_get_string(CONFIG_DITTA, "ha", "CoNoloNum"); + tipodoc = ini_get_string(CONFIG_DITTA, "ha", "CoNoloTip"); + break; + default: + break; + } - //deve cercare tutti i contratti del cliente e metterli nell'array + const TString& agente = mask.get(F_CODAGE); + + //deve cercare tutti i contratti del cliente e metterli nell'array TString query; query << "USE DOC KEY 5"; - query << "\nSELECT ((TIPODOC=#A_TIPODOC)||(TIPODOC=#R_TIPODOC)||(TIPODOC=#P_TIPODOC))&&(STR(DOC2=#CODCF))"; + query << "\nSELECT (TIPODOC=#TIPODOC)&&(STATO!=9)"; + if (codcfatt > 0) query <<"&&(STR(DOC2=#CODCF))"; if (agente.full()) query << "&&(CODAG=#CODAG)"; - query << "\nFROM PROVV=D CODNUM=" << k; - query << "\nTO PROVV=D CODNUM=" << k; + query << "\nFROM PROVV=D CODNUM=" << codnum; + query << "\nTO PROVV=D CODNUM=" << codnum; TISAM_recordset recset(query); - - recset.set_var("#A_TIPODOC", tip_ant); - recset.set_var("#R_TIPODOC", tip_rifa); - recset.set_var("#P_TIPODOC", tip_post); - - recset.set_var("#CODCF", codcfatt); - recset.set_var("#CODAG", agente); + recset.set_var("#TIPODOC", tipodoc); + if (codcfatt > 0) + recset.set_var("#CODCF", codcfatt); + if (agente.full()) + recset.set_var("#CODAG", agente); const long n_contratti = recset.items(); //questo serve solo al sagace programmatore @@ -320,55 +341,62 @@ int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& m for (bool ok = recset.move_first(); ok; ok = recset.move_next()) { //contratti anticipo 'A': datainizio esiste sempre, datafine non esiste (va ad esaurimento) + //contratti nolo 'N': datainizio esiste sempre, datafine esiste sempre //contratti posticipo 'P': datainizio esiste sempre, datafine può non esistere //contratti rifatturazione 'R': come contratti anticipo //controlla validità del contratto con le date scelte per l'elaborazione dei documenti const TDate data_ini_contratto = recset.get(DOC_DATACOMP).as_date(); - const TDate data_fine_elab = mask.get_date(F_ADATA); - TDate data_ini_elab = mask.get_date(F_DADATA); - if (!data_ini_elab.ok()) - check_date(data_fine_elab, data_ini_elab); - //quindi la datainizio vale per tutti allo stesso modo (è obbligatoria nei contratti) //se l'elaborazione finisce prima che cominci il contratto -> il contratto non serve a nulla if (data_ini_contratto > data_fine_elab) continue; + //la data fine vale invece solo per i contratti 'P' e potrebbe non esserci (contratti senza scadenza) - TDate data_fine_contratto; + TDate data_fine_contratto = recset.get(DOC_DATAFCOMP).as_date(); + + if (f == 3) // if (tipo_contratto == "N") + { + const TDate data_recesso = recset.get(DOC_DATASCIMP).as_date(); + if (data_recesso.ok()) + data_fine_contratto = data_recesso; + else + { + const int rate = recset.get(DOC_NCOLLI).as_int(); + const int paga = recset.get(DOC_NUMANT).as_int(); + if (paga >= rate) // Fine pagamento rate + continue; + } + } //se la data fine contratto non è valida (ma è presente!) non dobbiamo fare nulla, perchè il contratto non va elaborato - data_fine_contratto = recset.get(DOC_DATAFCOMP).as_date(); - if (data_fine_contratto.ok()) - { - if (data_fine_contratto < data_ini_elab) - continue; - } + if (data_fine_contratto.ok() && data_fine_contratto < data_ini_elab) + continue; //ci tocca istanziarci un contratto_premi TContratto_premi* curr_contratto = new TContratto_premi(recset.cursor()->curr()); //azzeratore del campo con il totale reso per elaborazione, nel caso di contratti Anticipo/Rifatturazione, riga spese const char tipo_contr = curr_contratto->tipo_contratto(); - if (tipo_contr == 'A' || tipo_contr == 'R') + FOR_EACH_PHYSICAL_RDOC(*curr_contratto, r, rdoc) { - FOR_EACH_PHYSICAL_RDOC(*curr_contratto, r, rdoc) + const TString& tr = rdoc->get(RDOC_TIPORIGA); + if (tr == HARDY_TIPORIGA_SOMMA && (tipo_contr == 'A' || tipo_contr == 'R')) { - if (rdoc->get(RDOC_TIPORIGA) == HARDY_TIPORIGA_SOMMA) - { - rdoc->zero(RCA_2_RESO_CORRENTE); + rdoc->zero(RCA_2_RESO_CORRENTE); - const real prezzo = rdoc->prezzo(false, false); - const real resost = rdoc->get(RCA_2_RESO_STORICO); - if (resost >= prezzo) // Contratto esaurito da ignorare - { - delete curr_contratto; - curr_contratto = NULL; - } - break; + const real prezzo = rdoc->prezzo(false, false); + const real resost = rdoc->get(RCA_2_RESO_STORICO); + if (resost >= prezzo) // Contratto esaurito da ignorare + { + delete curr_contratto; + curr_contratto = NULL; } - } + break; + } else + if (tr == HARDY_TIPORIGA_MERCE) + rdoc->zero(RDOC_QTA); } if (curr_contratto != NULL) // Ignora contratti chiusi @@ -378,6 +406,13 @@ int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& m return contratti_cliente.items(); } +int THardy_elab_docs::month_diff(const TDate& inizio, const TDate& fine) const +{ + const int i = inizio.year()*12 + inizio.month(); + const int f = fine.year()*12 + fine.month(); + return f-i; +} + bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log) { @@ -403,7 +438,7 @@ bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratt TArticolo articolo(rdoc_codart); const real normalized_rdoc_qta = articolo.convert_to_um(rdoc_qta, umqta_tot, rdoc_umqta, true); - //aggiornamento delle righe di tipo spesa (verigh02) per aggiornare le somme restituite nel caso di contratti di anticipo/rifatturazione + //aggiornamento delle righe di tipo spesa (verig02) per aggiornare le somme restituite nel caso di contratti di anticipo/rifatturazione if (tipo_contratto == 'A' || tipo_contratto == 'R') { FOR_EACH_PHYSICAL_RDOC(contratto, ra, rigacontratto) @@ -439,8 +474,6 @@ bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratt } } //if(rigamerce_premio != ZERO... - - } //if(rdoc_codart... } //FOR_EACH_PHYSICAL.. return elaborato; @@ -466,6 +499,7 @@ bool THardy_elab_docs::elabora_contratti(TDocumento& curr_doc, TArray& contratti TDate data_inizio(1, 1, data_fine.year()); switch (contratto.frequenza()) { + case 'M': data_inizio.set_month(data_fine.month()); break; // Solo contratti NOLO case 'S': data_inizio.set_month(data_fine.month() > 6 ? 7 : 1); break; case 'T': data_inizio.set_month(max(1, data_fine.month()-2)); break; default: break; @@ -481,9 +515,10 @@ bool THardy_elab_docs::elabora_contratti(TDocumento& curr_doc, TArray& contratti } -bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, TArray& documenti_cliente, TLog_report& log) +bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, + TAssoc_array& nac_nolo, TLog_report& log) { - if (documenti_cliente.empty()) + if (contratti_cliente.empty()) return false; //si informa se l'elaborazione è definitiva o meno @@ -506,25 +541,29 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, // TESTATA //alcuni parametri delle righe vanno presi dalla configurazione - TConfig config(CONFIG_DITTA, "ha"); TString4 nac_codnum, nac_tipo; TString8 cod_riga; switch (tipo_contratto) { case 'A': - nac_codnum = config.get("NaAntNum"); - nac_tipo = config.get("NaAntTip"); - cod_riga = config.get("NaAntSpe"); + nac_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaAntNum"); + nac_tipo = ini_get_string(CONFIG_DITTA, "ha", "NaAntTip"); + cod_riga = ini_get_string(CONFIG_DITTA, "ha", "NaAntSpe"); + break; + case 'N': + nac_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaNoloNum"); + nac_tipo = ini_get_string(CONFIG_DITTA, "ha", "NaNoloTip"); + cod_riga = ini_get_string(CONFIG_DITTA, "ha", "NaNoloSpe"); break; case 'R': - nac_codnum = config.get("NaRifaNum"); - nac_tipo = config.get("NaRifaTip"); - cod_riga = config.get("NaRifaSpe"); + nac_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaRifaNum"); + nac_tipo = ini_get_string(CONFIG_DITTA, "ha", "NaRifaTip"); + cod_riga = ini_get_string(CONFIG_DITTA, "ha", "NaRifaSpe"); break; default: - nac_codnum = config.get("NaPostNum"); - nac_tipo = config.get("NaPostTip"); - cod_riga = config.get("NaPostSpe"); + nac_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaPostNum"); + nac_tipo = ini_get_string(CONFIG_DITTA, "ha", "NaPostTip"); + cod_riga = ini_get_string(CONFIG_DITTA, "ha", "NaPostSpe"); break; } @@ -560,12 +599,11 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, //ogni riga di tipo merce (verigh01) del contratto origina una riga della NAC //noto il codice di riga spesa (che farà le veci del codart), troviamo il tipo riga dalla tabella SPP e tutte le features che servono const TRectype& rec_spp = cache().get("SPP", cod_riga); - const TString4 tipo_riga = rec_spp.get("S8"); + const TString4 tipo_riga_spp = rec_spp.get("S8"); const TString80 descr_riga_spp = rec_spp.get("S0"); const TString4 codiva = rec_spp.get("S3"); - TDate adata = mask.get_date(F_ADATA); - + TDate adata = mask.get_date(F_ADATA); TDate dadata = mask.get_date(F_DADATA); if (!dadata.ok()) check_date(adata, dadata); @@ -573,6 +611,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, TDate dmin(1, 1, adata.year()); switch (contratto.frequenza()) { + case 'M': dmin.set_month(adata.month()); break; // Solo nolo case 'S': dmin.set_month(adata.month() > 6 ? 7 : 1); break; case 'T': dmin.set_month(max(1, adata.month()-2)); break; default: break; @@ -604,7 +643,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, const real riga_contratto_premio = riga_contratto.get_real(RC_1_PREMIO); // riga merce NAC - TRiga_documento& nac_row = nac.new_row(tipo_riga); + TRiga_documento& nac_row = nac.new_row(tipo_riga_spp); nac_row.put(RDOC_CODART, cod_riga); //panegirico della descrizione @@ -642,7 +681,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, nac.destroy_rows(); // riga spesa NAC - TRiga_documento& nac_row = nac.new_row(tipo_riga); + TRiga_documento& nac_row = nac.new_row(tipo_riga_spp); nac_row.put(RDOC_CODART, cod_riga); //panegirico della descrizione @@ -663,6 +702,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, } } + // salvataggi vari // --------------- // NAC @@ -681,28 +721,51 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, // CONTRATTO //se il contratto è di tipo A/R aggiorna la riga spese speciale (verigh02) - if ((tipo_contratto == 'A' || tipo_contratto == 'R') && err == NOERR) + if (err == NOERR) switch (tipo_contratto) { - FOR_EACH_PHYSICAL_RDOC(contratto, r, rdoc) + case 'A': + case 'R': { - if (rdoc->get(RDOC_TIPORIGA) == HARDY_TIPORIGA_SOMMA) + FOR_EACH_PHYSICAL_RDOC(contratto, r, rdoc) { - const real anticipato = rdoc->get_real(RCA_2_ANTICIPATO); - real reso_storico = rdoc->get_real(RCA_2_RESO_STORICO); - reso_storico += rdoc->get_real(RCA_2_RESO_CORRENTE); - rdoc->put(RCA_2_RESO_STORICO, reso_storico); - //se il contratto è andato a pareggio avverte diligentemente l'operatore - if (reso_storico >= anticipato) - log_msg << " -- Contratto pareggiato!"; - - } //if (rdoc->get(RDOC_TIPORIGA)... - } //FOR_EACH_PHYSICAL_RDOC(contratto... - } //if (tipo_contratto == 'A'.. + if (rdoc->get(RDOC_TIPORIGA) == HARDY_TIPORIGA_SOMMA) + { + const real anticipato = rdoc->get_real(RCA_2_ANTICIPATO); + real reso_storico = rdoc->get_real(RCA_2_RESO_STORICO); + reso_storico += rdoc->get_real(RCA_2_RESO_CORRENTE); + rdoc->put(RCA_2_RESO_STORICO, reso_storico); + //se il contratto è andato a pareggio avverte diligentemente l'operatore + if (reso_storico >= anticipato) + log_msg << " -- Contratto pareggiato!"; + } //if (rdoc->get(RDOC_TIPORIGA)... + } //FOR_EACH_PHYSICAL_RDOC(contratto... + } + break; + case 'N': + { + TToken_string nakey; // Chiave NAC + nakey.add(provv); + nakey.add(anno); + nakey.add(nac_codnum); + nakey.add(nac.get(DOC_NDOC)); + + TToken_string cnkey; // Chiave contratto + cnkey.add(contratto.get(DOC_PROVV)); + cnkey.add(contratto.get(DOC_ANNO)); + cnkey.add(contratto.get(DOC_CODNUM)); + cnkey.add(contratto.get(DOC_NDOC)); + + nac_nolo.add(cnkey, nakey); // memorizza la coppia contratto/nac di nolo + } + break; + default: + break; + } // se non ci sono errori -> in caso di elaborazione definitiva procede alla registrazione.. //.. del contratto (ricordiamo che in memoria il contratto ha già le righe aggiornate - if (definitivo && err == NOERR) + if (err == NOERR && definitivo) { //alla fine della fiera aggiorna il contratto err = contratto.rewrite(); @@ -710,28 +773,167 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, if (err == NOERR) log_msg << " -- Contratto aggiornato"; else - log_msg << " -- Impossibile aggiornare contratto"; + log_msg << " -- Impossibile aggiornare contratto: errore " << err; } log.log(0, log_msg); log.log(0, ""); - } //FOR_EACH_ARRAY_ITEM(... giro sui contratti cliente + } //FOR_EACH_ARRAY_ITEM(... giro sui contratti cliente //il metodo ritornerà il successo o meno della registrazione return true; } +bool THardy_elab_docs::genera_fat(const TMask& mask, TContratto_premi& contratto, TToken_string& nac_nolo, TLog_report& log) +{ + //si informa se l'elaborazione è definitiva o meno + const char provv = mask.get_bool(F_DEFINITIVO) ? 'D' : 'P'; + const TDate datadoc = mask.get(F_DATAELAB); + + const TString4 fat_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaNoloNum"); + const TString4 fat_tipodoc = ini_get_string(CONFIG_DITTA, "ha", "FtNoloTip"); + const TString4 fat_codpag = ini_get_string(CONFIG_DITTA, "ha", "CodPagFat"); + const TString8 cod_riga = ini_get_string(CONFIG_DITTA, "ha", "FtNoloSpe"); + + TDocumento fat(provv, datadoc.year(), fat_codnum, 0); //num_doc = 0 perchè viene aggiornato in fase di registrazione + fat.set_tipo(fat_tipodoc); + fat.put(DOC_STATO, 1); + fat.put(DOC_DATADOC, datadoc); + fat.put(DOC_TIPOCF, 'C'); + fat.put(DOC_CODCF, contratto.get(DOC_DOC2)); + fat.put(DOC_CODAG, contratto.get(DOC_CODAG)); + fat.put(DOC_CODPAG, fat_codpag); + fat.put(DOC_DOC1, contratto.get(DOC_NDOC)); + fat.put(DOC_DATADOCRIF, contratto.get(DOC_DATADOC)); + fat.cli2doc(); + + const TRectype& rec_spp = cache().get("SPP", cod_riga); + const TString4 tipo_riga_spp = rec_spp.get("S8"); + const TString80 descr_riga_spp = rec_spp.get("S0"); + + real importo = contratto.get_real(DOC_IMPPAGATO); + const TDate recesso = contratto.data_recesso(); + if (recesso.ok() && recesso <= mask.get_date(F_ADATA)) + { + const real rate_da_pagare = contratto.get_int(DOC_NCOLLI) - contratto.get_int(DOC_NUMANT); + importo *= rate_da_pagare; + contratto.put(DOC_NUMANT, contratto.get(DOC_NCOLLI)); // Chiude contratto forzosamente + } + else + { + contratto.add(DOC_NUMANT, UNO); // Incrementa numero di rate pagate + } + if (provv == 'D') + { + const int err = contratto.rewrite(); + if (err != NOERR) + log.log(2, TR("Impossibile aggiornare il numero di rate pagate sul cotratto")); + } + + TRiga_documento& rdoc = fat.new_row(tipo_riga_spp); + rdoc.put(RDOC_CODART, cod_riga); + rdoc.put(RDOC_DESCR, descr_riga_spp); + rdoc.put(RDOC_QTA, UNO); + rdoc.put(RDOC_PREZZO, importo); + + const int err = fat.write(); + + if (err == NOERR) + { + TString log_msg; + log_msg.format("Generata FATTURA: %-4s%-4s%c %7ld", + (const char*)fat_codnum, (const char*)fat_tipodoc, fat.get_char(DOC_PROVV), fat.get_long(DOC_NDOC)); + log.log(0, log_msg); + + real tot_nac; + if (!nac_nolo.empty_items()) + { + const char provv = nac_nolo.get(0)[0]; + const int anno = nac_nolo.get_int(); + const TString4 codnum = nac_nolo.get(); + const long ndoc = nac_nolo.get_long(); + TDocumento nac(provv, anno, codnum, ndoc); + nac.put(DOC_DATADOCRIF, fat.get(DOC_DATADOC)); + nac.put(DOC_CODNUMRIF, fat.get(DOC_CODNUM)); + nac.put(DOC_ANNORIF, fat.get(DOC_ANNO)); + nac.put(DOC_NUMDOCRIF, fat.get(DOC_NDOC)); + nac.rewrite(); + + tot_nac = nac.totale_doc(); + } + genera_eff(fat, tot_nac, log); + } + else + { + log.log(2, TR("Impossibile generare la FATTURA")); + } + + return err == NOERR; +} + +bool THardy_elab_docs::genera_eff(const TDocumento& fat, const real& tot_nac, TLog_report& log) +{ +#ifdef NDEBUG + if (fat.get_char(DOC_PROVV) != 'D') + return false; +#endif + + const real tot_fat = fat.totale_doc(); + if (tot_fat == tot_nac) + return false; + + const bool credito = tot_fat > tot_nac; + const real importo = credito ? (tot_fat - tot_nac) : (tot_nac - tot_fat); + + TDate datascad = fat.get(DOC_DATADOC); datascad.set_end_month(); + + TEffetto eff; + eff.put(EFF_DATASCAD, datascad); + eff.put(EFF_TIPOPAG, credito ? tp_rid : tp_bonifico); + eff.put(EFF_TIPOCF, fat.get(DOC_TIPOCF)); + eff.put(EFF_CODCF, fat.get(DOC_CODCF)); + eff.put(EFF_CODABI, fat.get(DOC_CODABIA)); + eff.put(EFF_CODCAB, fat.get(DOC_CODCABA)); + + TRectype& reff = eff.row_r(1, true); + reff.put(REFF_ANNO, fat.get(DOC_ANNO)); + reff.put(REFF_NUMPART, fat.get(DOC_NDOC)); + reff.put(REFF_NRIGA, 1); + reff.put(REFF_NRATA, 1); + reff.put(REFF_PROVV, fat.get(DOC_PROVV)); + reff.put(REFF_ANNODOC, fat.get(DOC_ANNO)); + reff.put(REFF_CODNUM, fat.get(DOC_CODNUM)); + reff.put(REFF_NFATT, fat.get(DOC_NDOC)); + reff.put(REFF_DATAFATT,fat.get(DOC_DATADOC)); + reff.put(REFF_IMPFATT, tot_fat); + reff.put(REFF_IMPORTO, importo); + reff.put(REFF_ACCSAL, 'A'); + + TLocalisamfile file(LF_EFFETTI); + int err = eff.write(file); + if (err == NOERR) + { + TString msg; + msg << "Registrato effetto " << eff.numero(); + log.log(0, msg); + } + else + log.log(2, "Impossibile registrare l'effetto"); + + return err == NOERR; +} void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fatture, TLog_report& log) { - TProgind pi(fatture.items(), TR("Elaborazione documenti in corso..."), true, true); + TProgind pi(fatture.items(), TR("Elaborazione documenti in corso...")); //inizializza variabili da usare nella scansione del recordset long old_codcf = 0L; //array con l'insieme dei contratti e dei documenti elaborati per un singolo cliente! TArray contratti_cliente, documenti_cliente; + TAssoc_array nac_nolo; //giro sulle fatture (è il giro di più alto livello che viene esteso all'interno delle elabora_contratti) for (bool ok = fatture.move_first(); ok; ok = fatture.move_next()) @@ -745,7 +947,7 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat { //generazione NAC del cliente precedente (una per contratto cliente) if (old_codcf > 0 && !documenti_cliente.empty()) - genera_nac(mask, contratti_cliente, documenti_cliente, log); + genera_nac(mask, contratti_cliente, nac_nolo, log); //aggiorna old_codcf in modo da poter controllare i contratti solo al cambio codcf old_codcf = codcf; @@ -754,11 +956,11 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat TString msg; msg << TR("Cliente") << ' ' << codcf << ' ' << cache().get(LF_CLIFO, key, CLI_RAGSOC); log.log(0, msg); - const int n_contratti = find_contratti_cliente(codcf, mask, contratti_cliente); + const int n_contratti = find_contratti_cliente(codcf, mask, 0xF, contratti_cliente); if (n_contratti == 0) { TString msg; - msg << "Il cliente " << codcf << " non ha un contratto valido nel periodo selezionato pur avendo fatture."; + msg << TR("Il cliente non ha un contratto valido nel periodo selezionato pur avendo fatture."); log.log_error(msg); } } @@ -778,13 +980,13 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat } //for (bool ok = recset.move_first()... //generazione NAC dell'ultimo cliente (una per contratto cliente) - if (!documenti_cliente.empty()) - genera_nac(mask, contratti_cliente, documenti_cliente, log); + if (!contratti_cliente.empty()) + genera_nac(mask, contratti_cliente, nac_nolo, log); //se elaborazione definitiva -> cambia lo stato ai documenti di vendita elaborati, mettendolo uguale.. //..a quello deciso in configurazione const bool definitivo = mask.get_bool(F_DEFINITIVO); - if (definitivo) + if (definitivo && !documenti_cliente.empty()) { const TString4 stato_finale = ini_get_string(CONFIG_DITTA, "ha", "StatoFinFatt"); FOR_EACH_ARRAY_ITEM(documenti_cliente, r, riga) @@ -794,6 +996,23 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat fattura.rewrite(); } } + + // Elabora tutti i contratti di nolo per generare fatture ed effetti + const int cn = find_contratti_cliente(mask.get_long(F_CODCF), mask, 0x8, contratti_cliente); + FOR_EACH_ARRAY_ROW(contratti_cliente, n_nolo, r_nolo) + { + TContratto_premi& contratto = *(TContratto_premi*)r_nolo; + + TToken_string cnkey; // Chiave contratto + cnkey.add(contratto.get(DOC_PROVV)); + cnkey.add(contratto.get(DOC_ANNO)); + cnkey.add(contratto.get(DOC_CODNUM)); + cnkey.add(contratto.get(DOC_NDOC)); + + const TToken_string* nk = (const TToken_string*)nac_nolo.objptr(cnkey); + TToken_string nakey = nk ? *nk : EMPTY_STRING; + genera_fat(mask, contratto, nakey, log); + } } //metodo di alto livello con i punti principali del programma (come da analisi...) @@ -828,15 +1047,12 @@ void THardy_elab_docs::main_loop() { THardy_elab_docs_mask mask; while (mask.run() == K_ENTER) - { elabora(mask); - } } bool THardy_elab_docs::create() { - open_files(LF_DOC, LF_RIGHEDOC, 0); - + open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_DOC, LF_RIGHEDOC, LF_ANAMAG, 0); return TSkeleton_application::create(); } @@ -845,4 +1061,4 @@ int ha0500 (int argc, char* argv[]) THardy_elab_docs elabapp; elabapp.run(argc, argv, TR("Generazione NAC")); return 0; -} \ No newline at end of file +} diff --git a/ha/halib.cpp b/ha/halib.cpp index b2c8ce429..45c695f20 100755 --- a/ha/halib.cpp +++ b/ha/halib.cpp @@ -4,6 +4,7 @@ TString4 TContratto_premi::_tipo_ant; TString4 TContratto_premi::_tipo_post; TString4 TContratto_premi::_tipo_rifa; +TString4 TContratto_premi::_tipo_nolo; //metodi della TContratto_premi char TContratto_premi::tipo_contratto() const @@ -16,6 +17,7 @@ char TContratto_premi::tipo_contratto() const _tipo_ant = config.get("CoAntTip"); _tipo_post = config.get("CoPostTip"); _tipo_rifa = config.get("CoRifaTip"); + _tipo_nolo = config.get("CoNoloTip"); } //ritorna il tipo contratto come carattere; se non lo trova -> tipo 'P'osticipo perchè.. @@ -24,18 +26,21 @@ char TContratto_premi::tipo_contratto() const const TString& tipo_doc = get(DOC_TIPODOC); if (tipo_doc == _tipo_ant) return 'A'; - else - { - if (tipo_doc == _tipo_rifa) - return 'R'; - } + if (tipo_doc == _tipo_rifa) + return 'R'; + if (tipo_doc == _tipo_nolo) + return 'N'; return 'P'; } char TContratto_premi::frequenza() const { char f = get_char(DOC_CATVEN); - if (f < 'A') f = 'A'; + if (f < 'A') + { + const TString& tipo_doc = get(DOC_TIPODOC); + f = tipo_doc == _tipo_nolo ? 'M' : 'A'; + } return f; } @@ -49,6 +54,10 @@ bool TContratto_premi::data_valida(const TDate& datadoc) const if (f.ok() && datadoc > f) return false; + const TDate r = data_recesso(); + if (r.ok() && datadoc > r) + return false; + return true; } @@ -93,6 +102,7 @@ const TString& TCodArtEsselunga_cache::decode(const TString& codart) ///////////////////////////////////////////////////////////// // Metodi di utility ///////////////////////////////////////////////////////////// + real hd_find_sconto(const TString& str_sconto) { real val_perc; @@ -203,7 +213,7 @@ void hd_key2conto(const TString& key, int& gr, int& co, long& so) { gr = atoi(key.mid(1,2)); co = atoi(key.mid(3,2)); - so = atoi(key.mid(5,3)); + so = atol(key.mid(5,3)); } const TString& hd_get_next_att_key(const TString& codart) @@ -225,7 +235,5 @@ const TString& hd_get_next_att_key(const TString& codart) codtab.format("%-5s%07d", (const char*)codart, last_prog + 1); return codtab; } - - return EMPTY_STRING; } diff --git a/ha/halib.h b/ha/halib.h index 2defc76f4..63ca0c995 100755 --- a/ha/halib.h +++ b/ha/halib.h @@ -27,7 +27,7 @@ class TContratto_premi : public TDocumento { - static TString4 _tipo_ant, _tipo_post, _tipo_rifa; + static TString4 _tipo_ant, _tipo_post, _tipo_rifa, _tipo_nolo; public: char tipo_contratto() const; @@ -36,6 +36,7 @@ public: TDate data_inizio() const { return get_date(DOC_DATACOMP); } TDate data_fine() const { return get_date(DOC_DATAFCOMP); } + TDate data_recesso() const { return get_date(DOC_DATASCIMP); } bool data_valida(const TDate& datadoc) const; TContratto_premi(char provv, int anno, const char* codnum, long ndoc);