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;
|
||||
}
|
||||
|
||||
class TDocumenti_premio_msk : public TAutomask
|
||||
{
|
||||
protected:
|
||||
@ -77,7 +78,7 @@ protected:
|
||||
|
||||
public:
|
||||
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
|
||||
@ -279,7 +280,9 @@ 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;
|
||||
TMask* msk = tipo == "N" ? _nmsk : _cmsk;
|
||||
msk->set(F_TIPOCONTR, tipo);
|
||||
return msk;
|
||||
}
|
||||
|
||||
//cerca il primo numero valido per NDOC
|
||||
|
@ -59,14 +59,37 @@ END
|
||||
NUMBER F_CODCF 6
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cliente "
|
||||
WARNING "Cliente assente"
|
||||
HELP "Codice del cliente del documento"
|
||||
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
|
||||
|
||||
STRING F_DESCF 50
|
||||
BEGIN
|
||||
WARNING "Cliente assente"
|
||||
HELP "Ragione sociale del cliente del documento"
|
||||
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
|
||||
|
||||
NUMBER F_CODCFATT 6
|
||||
@ -81,8 +104,6 @@ BEGIN
|
||||
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
|
||||
|
@ -51,33 +51,6 @@ bool THardy_elab_docs_mask::on_field_event(TOperable_field& o, TField_event e, l
|
||||
}
|
||||
}
|
||||
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..
|
||||
//..eliminare tutte le NAC provvisorie generate in precedenza
|
||||
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)
|
||||
// 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)
|
||||
{
|
||||
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())
|
||||
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!
|
||||
// settaggio delle variabili
|
||||
// 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))
|
||||
{
|
||||
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_DATADOC, datadoc);
|
||||
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_CODPAG, fat_codpag);
|
||||
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
|
||||
}
|
||||
else
|
||||
{
|
||||
contratto.add(DOC_NUMANT, UNO); // Incrementa numero di rate pagate
|
||||
}
|
||||
|
||||
if (provv == 'D')
|
||||
{
|
||||
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;
|
||||
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)
|
||||
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;
|
||||
|
||||
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)
|
||||
{
|
||||
//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);
|
||||
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)
|
||||
{
|
||||
TString msg;
|
||||
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
|
||||
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)
|
||||
if (tc & 0x8) // Elaborazino 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
|
||||
cnkey.add(contratto.get(DOC_PROVV));
|
||||
cnkey.add(contratto.get(DOC_ANNO));
|
||||
cnkey.add(contratto.get(DOC_CODNUM));
|
||||
cnkey.add(contratto.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));
|
||||
|
||||
const TToken_string* nk = (const TToken_string*)nac_nolo.objptr(cnkey);
|
||||
TToken_string nakey = nk ? *nk : EMPTY_STRING;
|
||||
genera_fat(mask, contratto, nakey, log);
|
||||
const TToken_string* nk = (const TToken_string*)nac_nolo.objptr(cnkey);
|
||||
TToken_string nakey = nk ? *nk : EMPTY_STRING;
|
||||
genera_fat(mask, contratto, nakey, log);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
#define F_RAGSOC 205
|
||||
#define F_DADATA 206
|
||||
#define F_ADATA 207
|
||||
//#define F_TIPOCONTR 208
|
||||
#define F_TIPOCONTR 208
|
||||
//#define F_CODNUM_NAC 210
|
||||
//#define F_DESCRNUM_NAC 211
|
||||
//#define F_CODTIPO_NAC 212
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "ha0500a.h"
|
||||
|
||||
PAGE "Generazione NAC" -1 -1 78 11
|
||||
PAGE "Generazione NAC" -1 -1 78 15
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
@ -69,85 +69,34 @@ BEGIN
|
||||
VALIDATE DATE_CMP_FUNC >= F_DADATA
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
GROUPBOX DLG_NULL 76 4
|
||||
BEGIN
|
||||
PROMPT 1 6 "@bParametri elaborazione"
|
||||
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
|
||||
BEGIN
|
||||
PROMPT 2 7 "Data elaborazione "
|
||||
PROMPT 43 7 "Data elaborazione "
|
||||
FLAGS "A"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BOOLEAN F_DEFINITIVO
|
||||
BEGIN
|
||||
PROMPT 40 7 "Definitivo"
|
||||
END
|
||||
|
||||
/*RADIOBUTTON F_TIPOCONTR 1 72
|
||||
RADIOBUTTON F_TIPOCONTR 1 76
|
||||
BEGIN
|
||||
PROMPT 2 8 "@bTipi contratto da elaborare"
|
||||
ITEM "A|Anticipo"
|
||||
ITEM "P|Posticipo"
|
||||
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"
|
||||
PROMPT 1 10 "@bContratti da elaborare"
|
||||
ITEM "7|Anticipo/Posticipo/Rifatturazione"
|
||||
ITEM "8|Nolo"
|
||||
END
|
||||
|
||||
STRING DLG_PROFILE 50
|
||||
|
Loading…
x
Reference in New Issue
Block a user