Corretta gestione generazione nac nolo separatamente dalle altre
git-svn-id: svn://10.65.10.50/branches/R_10_00@22839 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
43042b134a
commit
19f7ec802f
@ -67,6 +67,7 @@ bool TDocumenti_premio_query_msk::on_field_event(TOperable_field& o, TField_even
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
class TDocumenti_premio_msk : public TAutomask
|
class TDocumenti_premio_msk : public TAutomask
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@ -77,7 +78,7 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
const TString& find_contabilizzazione() const;
|
const TString& find_contabilizzazione() const;
|
||||||
TDocumenti_premio_msk(const char* name = "ha0300a") : TAutomask(name) {}
|
TDocumenti_premio_msk(const char* name) : TAutomask(name) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//metodo standard per far funzionare il shift+f12 in modo da poter cambiare lo stato
|
//metodo standard per far funzionare il shift+f12 in modo da poter cambiare lo stato
|
||||||
@ -279,7 +280,9 @@ TMask* TDocumenti_premio::get_mask(int m)
|
|||||||
if (m < MODE_INS)
|
if (m < MODE_INS)
|
||||||
return _qmsk;
|
return _qmsk;
|
||||||
const TString& tipo = _qmsk->get(F_TIPOCONTR);
|
const TString& tipo = _qmsk->get(F_TIPOCONTR);
|
||||||
return tipo == "N" ? _nmsk : _cmsk;
|
TMask* msk = tipo == "N" ? _nmsk : _cmsk;
|
||||||
|
msk->set(F_TIPOCONTR, tipo);
|
||||||
|
return msk;
|
||||||
}
|
}
|
||||||
|
|
||||||
//cerca il primo numero valido per NDOC
|
//cerca il primo numero valido per NDOC
|
||||||
|
@ -59,14 +59,37 @@ END
|
|||||||
NUMBER F_CODCF 6
|
NUMBER F_CODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Cliente "
|
PROMPT 2 2 "Cliente "
|
||||||
|
WARNING "Cliente assente"
|
||||||
|
HELP "Codice del cliente del documento"
|
||||||
FIELD CODCF
|
FIELD CODCF
|
||||||
FLAGS "D"
|
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
|
END
|
||||||
|
|
||||||
STRING F_DESCF 50
|
STRING F_DESCF 50
|
||||||
BEGIN
|
BEGIN
|
||||||
|
WARNING "Cliente assente"
|
||||||
|
HELP "Ragione sociale del cliente del documento"
|
||||||
PROMPT 24 2 ""
|
PROMPT 24 2 ""
|
||||||
FLAGS "D"
|
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
|
END
|
||||||
|
|
||||||
NUMBER F_CODCFATT 6
|
NUMBER F_CODCFATT 6
|
||||||
@ -81,8 +104,6 @@ BEGIN
|
|||||||
DISPLAY "Sospeso" SOSPESO
|
DISPLAY "Sospeso" SOSPESO
|
||||||
OUTPUT F_CODCFATT CODCF
|
OUTPUT F_CODCFATT CODCF
|
||||||
OUTPUT F_DESCFATT RAGSOC
|
OUTPUT F_DESCFATT RAGSOC
|
||||||
OUTPUT F_CODCF CODCF
|
|
||||||
OUTPUT F_DESCF RAGSOC
|
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
ADD RUN cg0 -1 C
|
ADD RUN cg0 -1 C
|
||||||
FIELD DOC2
|
FIELD DOC2
|
||||||
|
@ -51,33 +51,6 @@ bool THardy_elab_docs_mask::on_field_event(TOperable_field& o, TField_event e, l
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
/*case F_TIPOCONTR:
|
|
||||||
if (e == fe_modify)
|
|
||||||
{
|
|
||||||
//in base alla tipologia di contratti da elaborare decide numerazione e tipo delle NAC da generare
|
|
||||||
TConfig config(CONFIG_DITTA, "ha");
|
|
||||||
TString4 codnum, tipodoc;
|
|
||||||
|
|
||||||
switch (o.get()[0])
|
|
||||||
{
|
|
||||||
case 'A':
|
|
||||||
codnum = config.get("NaAntNum");
|
|
||||||
tipodoc = config.get("NaAntTip");
|
|
||||||
break;
|
|
||||||
case 'R':
|
|
||||||
codnum = config.get("NaRifaNum");
|
|
||||||
tipodoc = config.get("NaRifaTip");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
codnum = config.get("NaPostNum");
|
|
||||||
tipodoc = config.get("NaPostTip");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
set(F_CODNUM_NAC, codnum);
|
|
||||||
set(F_CODTIPO_NAC, tipodoc);
|
|
||||||
}
|
|
||||||
break;*/
|
|
||||||
//in caso di elaborazione definitiva è obbligatorio..
|
//in caso di elaborazione definitiva è obbligatorio..
|
||||||
//..eliminare tutte le NAC provvisorie generate in precedenza
|
//..eliminare tutte le NAC provvisorie generate in precedenza
|
||||||
case F_DEFINITIVO:
|
case F_DEFINITIVO:
|
||||||
@ -281,6 +254,7 @@ 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)
|
//metodo che riempie un array con tutti i contratti del cliente passatogli (in base alla tipologia di contratti da elaborare)
|
||||||
|
// flags: 0x7 = tutti tranne nolo; 0x8 = nolo
|
||||||
int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& mask, int flags, TArray& contratti_cliente)
|
int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& mask, int flags, TArray& contratti_cliente)
|
||||||
{
|
{
|
||||||
contratti_cliente.destroy();
|
contratti_cliente.destroy();
|
||||||
@ -290,8 +264,9 @@ int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& m
|
|||||||
if (!data_ini_elab.ok())
|
if (!data_ini_elab.ok())
|
||||||
check_date(data_fine_elab, data_ini_elab);
|
check_date(data_fine_elab, data_ini_elab);
|
||||||
|
|
||||||
//settaggio delle variabili
|
// settaggio delle variabili
|
||||||
//il codice numerazione lo trova nella configurazione Hardy, e lo deve scegliere in base alla tipologia di contratti che sta esaminando!
|
// il codice numerazione lo trova nella configurazione Hardy,
|
||||||
|
// lo deve scegliere in base alla tipologia di contratti che sta esaminando!
|
||||||
for (int f = 0; f < 4; f++) if (flags & (1 << f))
|
for (int f = 0; f < 4; f++) if (flags & (1 << f))
|
||||||
{
|
{
|
||||||
TString4 codnum, tipodoc;
|
TString4 codnum, tipodoc;
|
||||||
@ -802,7 +777,7 @@ bool THardy_elab_docs::genera_fat(const TMask& mask, TContratto_premi& contratto
|
|||||||
fat.put(DOC_STATO, 1);
|
fat.put(DOC_STATO, 1);
|
||||||
fat.put(DOC_DATADOC, datadoc);
|
fat.put(DOC_DATADOC, datadoc);
|
||||||
fat.put(DOC_TIPOCF, 'C');
|
fat.put(DOC_TIPOCF, 'C');
|
||||||
fat.put(DOC_CODCF, contratto.get(DOC_DOC2));
|
fat.put(DOC_CODCF, contratto.get(DOC_CODCF));
|
||||||
fat.put(DOC_CODAG, contratto.get(DOC_CODAG));
|
fat.put(DOC_CODAG, contratto.get(DOC_CODAG));
|
||||||
fat.put(DOC_CODPAG, fat_codpag);
|
fat.put(DOC_CODPAG, fat_codpag);
|
||||||
fat.put(DOC_DOC1, contratto.get(DOC_NDOC));
|
fat.put(DOC_DOC1, contratto.get(DOC_NDOC));
|
||||||
@ -822,9 +797,8 @@ bool THardy_elab_docs::genera_fat(const TMask& mask, TContratto_premi& contratto
|
|||||||
contratto.put(DOC_NUMANT, contratto.get(DOC_NCOLLI)); // Chiude contratto forzosamente
|
contratto.put(DOC_NUMANT, contratto.get(DOC_NCOLLI)); // Chiude contratto forzosamente
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
contratto.add(DOC_NUMANT, UNO); // Incrementa numero di rate pagate
|
contratto.add(DOC_NUMANT, UNO); // Incrementa numero di rate pagate
|
||||||
}
|
|
||||||
if (provv == 'D')
|
if (provv == 'D')
|
||||||
{
|
{
|
||||||
const int err = contratto.rewrite();
|
const int err = contratto.rewrite();
|
||||||
@ -935,6 +909,8 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat
|
|||||||
TArray contratti_cliente, documenti_cliente;
|
TArray contratti_cliente, documenti_cliente;
|
||||||
TAssoc_array nac_nolo;
|
TAssoc_array nac_nolo;
|
||||||
|
|
||||||
|
const int tc = mask.get_int(F_TIPOCONTR); // 0x7 (tutti tranne nolo) o 0x8 (solo nolo)
|
||||||
|
|
||||||
//giro sulle fatture (è il giro di più alto livello che viene esteso all'interno delle elabora_contratti)
|
//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())
|
for (bool ok = fatture.move_first(); ok; ok = fatture.move_next())
|
||||||
{
|
{
|
||||||
@ -942,7 +918,7 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
const long codcf = fatture.get(DOC_CODCF).as_int();
|
const long codcf = fatture.get(DOC_CODCF).as_int();
|
||||||
//al cambio cliente deve controllare i contratti di quel cliente nel periodo di elaborazione!!
|
// al cambio cliente deve controllare i contratti di quel cliente nel periodo di elaborazione!!
|
||||||
if (codcf != old_codcf)
|
if (codcf != old_codcf)
|
||||||
{
|
{
|
||||||
//generazione NAC del cliente precedente (una per contratto cliente)
|
//generazione NAC del cliente precedente (una per contratto cliente)
|
||||||
@ -956,12 +932,12 @@ 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);
|
TString msg; msg << TR("Cliente") << ' ' << codcf << ' ' << cache().get(LF_CLIFO, key, CLI_RAGSOC);
|
||||||
log.log(0, msg);
|
log.log(0, msg);
|
||||||
|
|
||||||
const int n_contratti = find_contratti_cliente(codcf, mask, 0xF, contratti_cliente);
|
const int n_contratti = find_contratti_cliente(codcf, mask, tc, contratti_cliente);
|
||||||
if (n_contratti == 0)
|
if (n_contratti == 0)
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg << TR("Il cliente 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);
|
log.log(1, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -997,21 +973,24 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Elabora tutti i contratti di nolo per generare fatture ed effetti
|
if (tc & 0x8) // Elaborazino nolo?
|
||||||
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;
|
// 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
|
TToken_string cnkey; // Chiave contratto
|
||||||
cnkey.add(contratto.get(DOC_PROVV));
|
cnkey.add(contratto.get(DOC_PROVV));
|
||||||
cnkey.add(contratto.get(DOC_ANNO));
|
cnkey.add(contratto.get(DOC_ANNO));
|
||||||
cnkey.add(contratto.get(DOC_CODNUM));
|
cnkey.add(contratto.get(DOC_CODNUM));
|
||||||
cnkey.add(contratto.get(DOC_NDOC));
|
cnkey.add(contratto.get(DOC_NDOC));
|
||||||
|
|
||||||
const TToken_string* nk = (const TToken_string*)nac_nolo.objptr(cnkey);
|
const TToken_string* nk = (const TToken_string*)nac_nolo.objptr(cnkey);
|
||||||
TToken_string nakey = nk ? *nk : EMPTY_STRING;
|
TToken_string nakey = nk ? *nk : EMPTY_STRING;
|
||||||
genera_fat(mask, contratto, nakey, log);
|
genera_fat(mask, contratto, nakey, log);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#define F_RAGSOC 205
|
#define F_RAGSOC 205
|
||||||
#define F_DADATA 206
|
#define F_DADATA 206
|
||||||
#define F_ADATA 207
|
#define F_ADATA 207
|
||||||
//#define F_TIPOCONTR 208
|
#define F_TIPOCONTR 208
|
||||||
//#define F_CODNUM_NAC 210
|
//#define F_CODNUM_NAC 210
|
||||||
//#define F_DESCRNUM_NAC 211
|
//#define F_DESCRNUM_NAC 211
|
||||||
//#define F_CODTIPO_NAC 212
|
//#define F_CODTIPO_NAC 212
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "ha0500a.h"
|
#include "ha0500a.h"
|
||||||
|
|
||||||
PAGE "Generazione NAC" -1 -1 78 11
|
PAGE "Generazione NAC" -1 -1 78 15
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 5
|
GROUPBOX DLG_NULL 76 5
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -69,85 +69,34 @@ BEGIN
|
|||||||
VALIDATE DATE_CMP_FUNC >= F_DADATA
|
VALIDATE DATE_CMP_FUNC >= F_DADATA
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 3
|
GROUPBOX DLG_NULL 76 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 "@bParametri elaborazione"
|
PROMPT 1 6 "@bParametri elaborazione"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_DEFINITIVO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Definitiva"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_KILLPROVV
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Eliminare tutte le note di accredito provvisorie"
|
||||||
|
END
|
||||||
|
|
||||||
DATE F_DATAELAB
|
DATE F_DATAELAB
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Data elaborazione "
|
PROMPT 43 7 "Data elaborazione "
|
||||||
FLAGS "A"
|
FLAGS "A"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_DEFINITIVO
|
|
||||||
BEGIN
|
|
||||||
PROMPT 40 7 "Definitivo"
|
|
||||||
END
|
|
||||||
|
|
||||||
/*RADIOBUTTON F_TIPOCONTR 1 72
|
RADIOBUTTON F_TIPOCONTR 1 76
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "@bTipi contratto da elaborare"
|
PROMPT 1 10 "@bContratti da elaborare"
|
||||||
ITEM "A|Anticipo"
|
ITEM "7|Anticipo/Posticipo/Rifatturazione"
|
||||||
ITEM "P|Posticipo"
|
ITEM "8|Nolo"
|
||||||
ITEM "R|Rifatturazione"
|
|
||||||
FLAGS "Z"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_CODNUM_NAC 4
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 11 "Num. doc. NAC "
|
|
||||||
USE %NUM
|
|
||||||
INPUT CODTAB F_CODNUM_NAC
|
|
||||||
DISPLAY "Codice@8" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
OUTPUT F_CODNUM_NAC CODTAB
|
|
||||||
OUTPUT F_DESCRNUM_NAC S0
|
|
||||||
FLAGS "DG"
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_DESCRNUM_NAC 50 43
|
|
||||||
BEGIN
|
|
||||||
PROMPT 29 11 ""
|
|
||||||
USE %NUM KEY 2
|
|
||||||
INPUT S0 F_DESCRNUM_NAC
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
DISPLAY "Codice@8" CODTAB
|
|
||||||
COPY OUTPUT F_CODNUM_NAC
|
|
||||||
FLAGS "DG"
|
|
||||||
CHECKTYPE NORMAL
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_CODTIPO_NAC 4
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 12 "Tipo doc. NAC "
|
|
||||||
USE %TIP
|
|
||||||
INPUT CODTAB F_CODTIPO_NAC
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
OUTPUT F_CODTIPO_NAC CODTAB
|
|
||||||
OUTPUT F_DESCRTIPO_NAC S0
|
|
||||||
FLAGS "DG"
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_DESCRTIPO_NAC 50 43
|
|
||||||
BEGIN
|
|
||||||
PROMPT 29 12 ""
|
|
||||||
USE %TIP KEY 2
|
|
||||||
INPUT S0 F_DESCRTIPO_NAC
|
|
||||||
DISPLAY "Descrizione@60" S0
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
COPY OUTPUT F_CODTIPO_NAC
|
|
||||||
FLAGS "DG"
|
|
||||||
CHECKTYPE NORMAL
|
|
||||||
END*/
|
|
||||||
|
|
||||||
BOOLEAN F_KILLPROVV
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 9 "Eliminare tutte le note di accredito provvisorie"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING DLG_PROFILE 50
|
STRING DLG_PROFILE 50
|
||||||
|
Loading…
x
Reference in New Issue
Block a user