Patch level : 10.0 814
Files correlati : ve0.exe ve6.exe Ricompilazione Demo : [ ] Commento : Bug 0001703: Fatturazione Bolle (ve6) Nella gestione dei riferimenti in testa non viene scritto il flagh descrizione lunga per cui non si vedono i riferimenti delle bolla dalla seconda in poi (seganalato da Servizi informatici (SIPAG)) Bug 0001702: Documenti interattivi (ve0) Agguingere una elaborazione al tipodocumento in modo da poter effettuare delle operazioni all' atto della registrazione. (HABA) Per utilizzarla correttamente chi la configura deve configurarei stati dell elaborazione perche' venga chiamata quand serve. Modificata anche la lettura dell stato attivo per le provvigioni, da verificare ka genreazioe dell provvigioni. git-svn-id: svn://10.65.10.50/branches/R_10_00@20953 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a9b090689a
commit
815b64014a
@ -363,6 +363,74 @@ bool TMotore_application::menu(MENU_TAG mt)
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TMotore_application::do_elab( TDocumento& doc ) // C 90
|
||||
{
|
||||
const TString16 codelab = doc.tipo().elaborazione();
|
||||
|
||||
if (codelab.full())
|
||||
{
|
||||
TRectype eld = cache().get("%ELD", codelab);
|
||||
if (!eld.empty())
|
||||
{
|
||||
TElaborazione * el = NULL;
|
||||
switch (eld.get_int("I0"))
|
||||
{
|
||||
case _esterna :
|
||||
el = new TElaborazione_esterna(eld);
|
||||
break;
|
||||
case _consegna_ordini:
|
||||
el = new TConsegna_ordini(eld);
|
||||
break;
|
||||
case _fatturazione_bolle :
|
||||
el = new TFatturazione_bolle(eld);
|
||||
break;
|
||||
case _contabilizzazione :
|
||||
el = new TContabilizzazione(eld);
|
||||
break;
|
||||
case _copia_documento :
|
||||
el = new TCopia_documento(eld);
|
||||
break;
|
||||
case _generazione_effetti :
|
||||
el = new TGenerazione_effetti(eld);
|
||||
break;
|
||||
case _consuntivazione_produzione :
|
||||
el = new TConsuntivazione_produzione(eld);
|
||||
break;
|
||||
case _contabilizzazione_analitica :
|
||||
el = new TContabilizzazione_analitica(eld);
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
TToken_string stati;
|
||||
|
||||
el->stati_validi(stati);
|
||||
if (stati.find(doc.stato()) >= 0)
|
||||
{
|
||||
TDocumento newdoc(doc.get_char(DOC_PROVV), doc.get_int(DOC_ANNO), el->codice_numerazione_finale(), 0L);
|
||||
|
||||
TDocumento::copy_data(newdoc.head(), doc.head());
|
||||
newdoc.put(DOC_TIPODOC, el->tipo_finale());
|
||||
newdoc.put(DOC_STATO, el->stato_finale());
|
||||
if (newdoc.tipo().mov_mag())
|
||||
newdoc.put(DOC_CAUSMAG, newdoc.tipo().caus_mov());
|
||||
else
|
||||
newdoc.zero(DOC_CAUSMAG);
|
||||
|
||||
TLista_documenti in; in.add(doc);
|
||||
TLista_documenti out; out.add(newdoc);
|
||||
if (el->elabora(in, out, TDate(TODAY), true))
|
||||
{
|
||||
if (out[0] != newdoc)
|
||||
out.rewrite();
|
||||
if (doc != in[0])
|
||||
doc = in[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int TMotore_application::write( const TMask& m ) // C 90
|
||||
{
|
||||
TDocumento_mask& mask = (TDocumento_mask&) m;
|
||||
@ -381,6 +449,7 @@ int TMotore_application::write( const TMask& m ) // C 90
|
||||
break;
|
||||
}
|
||||
}
|
||||
do_elab(d);
|
||||
|
||||
const int err = TRelation_application::write(m);
|
||||
|
||||
@ -409,6 +478,7 @@ int TMotore_application::rewrite( const TMask& m ) // C 90
|
||||
if (d.bloccato())
|
||||
return NOERR;
|
||||
d = ((TDocumento_mask&)m).doc(); // Trasferisce il documento da maschera a record
|
||||
do_elab(d);
|
||||
const int err = TRelation_application::rewrite(m);
|
||||
if (err == NOERR)
|
||||
{
|
||||
@ -420,6 +490,9 @@ int TMotore_application::rewrite( const TMask& m ) // C 90
|
||||
|
||||
bool TMotore_application::remove() // C 90
|
||||
{
|
||||
TDocumento& d = (TDocumento &) _rel->curr();
|
||||
|
||||
do_elab(d); // serve ??????
|
||||
const bool ok = TRelation_application::remove();
|
||||
if (ok)
|
||||
edit_mask().save_father_rows();
|
||||
|
@ -49,6 +49,7 @@ protected:
|
||||
virtual void init_modify_mode( TMask& m );
|
||||
void load_auto_reopen_data();
|
||||
virtual int read( TMask& m );
|
||||
virtual void do_elab( TDocumento& doc );
|
||||
virtual int write( const TMask& m );
|
||||
virtual int rewrite( const TMask& m );
|
||||
virtual bool remove();
|
||||
|
@ -305,7 +305,8 @@ public:
|
||||
bool provvigioni() const { return get_bool("B3"); }
|
||||
const char stato_mov_iniziale() const {return get_char("S7"); }
|
||||
const char stato_mov_finale() const {return get_char("S8"); }
|
||||
const char stato_provvigioni() const {return get_char("S3"); }
|
||||
const char stato_provvigioni() const {return get("S3")[0]; }
|
||||
const TString & elaborazione() const {return get("S3").mid(4,8); }
|
||||
const TString & caus_mov() const {return get("S9"); }
|
||||
const TString & caus_anticipo() const {return get("S10"); }
|
||||
const TString & tipi_iva_validi() const {return get("S11"); }
|
||||
@ -705,6 +706,7 @@ class TDocumento : public TMultiple_rectype // velib03
|
||||
TOccasionale _occas;
|
||||
TPagamento _pag;
|
||||
TAssoc_array _tabella_iva; // tabella di imponibili ed imposte
|
||||
TString_array _cod_iva;
|
||||
|
||||
TString8 _old_agente; // Agente originale
|
||||
TString8 _old_agente1; // Secondo Agente originale
|
||||
@ -762,6 +764,9 @@ public:
|
||||
void dirty_fields();
|
||||
|
||||
TAssoc_array& tabella_iva(bool solo_imponibili = false) { update_tabella_iva(solo_imponibili); return _tabella_iva; }
|
||||
int riepilogo_iva_items() const { return _cod_iva.items();}
|
||||
const TRiepilogo_iva * riepilogo_iva(const char * cod) const { return (const TRiepilogo_iva *) _tabella_iva.objptr(cod); }
|
||||
const TRiepilogo_iva * riepilogo_iva(int index) const { return (index >= 0 && index < _cod_iva.items()) ? riepilogo_iva(_cod_iva.row(index)) : NULL; }
|
||||
TCli_for& clifor(bool force_reload = false) const;
|
||||
TOccasionale& occas() const;
|
||||
const TAgente& agente(bool first = true) const;
|
||||
|
@ -462,6 +462,36 @@ int TElaborazione::read(const char* cod)
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TElaborazione::tipi_validi(TToken_string& tipi) const
|
||||
{
|
||||
tipi.cut(0);
|
||||
TString4 t;
|
||||
for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
|
||||
{
|
||||
t = tipo_iniziale(i);
|
||||
if (t.full())
|
||||
tipi.add(t);
|
||||
}
|
||||
CHECK(!tipi.empty_items(), "Nessun tipo documento valido");
|
||||
}
|
||||
|
||||
void TElaborazione::stati_validi(TToken_string& stati) const
|
||||
{
|
||||
stati.cut(0);
|
||||
for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
|
||||
{
|
||||
const char s = stato_iniziale(i);
|
||||
if (s != '\0' && s != ' ')
|
||||
stati.add(s);
|
||||
else
|
||||
if (s == '\0')
|
||||
break;
|
||||
}
|
||||
CHECK(!stati.empty_items(), "Nessuno stato documento valido");
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TElaborazione_esterna
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -165,8 +165,9 @@ public:
|
||||
const TString& descrizione() const { return get("S0"); }
|
||||
const TTipo_elaborazione tipo() const { return (TTipo_elaborazione) get_int("I0"); }
|
||||
|
||||
virtual void tipi_validi(TToken_string& tipi) const {}
|
||||
virtual void stati_validi(TToken_string& stati) const {}
|
||||
virtual void tipi_validi(TToken_string& tipi) const;
|
||||
virtual void stati_validi(TToken_string& stati) const;
|
||||
|
||||
|
||||
bool doc_uguale(int u) const { return get("S1").mid(u, 1) == "X"; }
|
||||
bool riga_uguale(int u) const { return get("S1").mid(40+u, 1) == "X"; }
|
||||
@ -263,8 +264,6 @@ public:
|
||||
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||
const TDate& data_elab, bool interattivo = false);
|
||||
|
||||
virtual void tipi_validi(TToken_string& tipi) const;
|
||||
virtual void stati_validi(TToken_string& stati) const;
|
||||
bool change_clifo() { return get_bool("B14"); }
|
||||
|
||||
TFatturazione_bolle(const char* cod);
|
||||
|
@ -33,31 +33,6 @@ TFatturazione_bolle::TFatturazione_bolle(const TRectype& rec)
|
||||
_impminfat = real(ini_get_string(CONFIG_DITTA, "ve", "IMPMINFAT"));
|
||||
}
|
||||
|
||||
void TFatturazione_bolle::tipi_validi(TToken_string& tipi) const
|
||||
{
|
||||
tipi.cut(0);
|
||||
TString4 t;
|
||||
for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
|
||||
{
|
||||
t = tipo_iniziale(i);
|
||||
if (t.full())
|
||||
tipi.add(t);
|
||||
}
|
||||
CHECK(!tipi.empty_items(), "Nessun tipo documento valido");
|
||||
}
|
||||
|
||||
void TFatturazione_bolle::stati_validi(TToken_string& stati) const
|
||||
{
|
||||
stati.cut(0);
|
||||
for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
|
||||
{
|
||||
const char s = stato_iniziale(i);
|
||||
if (s != '\0')
|
||||
stati.add(s);
|
||||
}
|
||||
CHECK(!stati.empty_items(), "Nessuno stato documento valido");
|
||||
}
|
||||
|
||||
void TFatturazione_bolle::campi_raggruppamento_righe(TToken_string& campi_riga) const
|
||||
{
|
||||
const bool ragg_rig = raggruppa_righe();
|
||||
@ -327,6 +302,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
memo.rtrim();
|
||||
memo << '\n' << riferimento;
|
||||
rout.put(RDOC_DESCEST, memo);
|
||||
rout.put(RDOC_DESCLUNGA, "X");
|
||||
}
|
||||
} //if(rif_packed)..
|
||||
} //if(gestione_riferimenti)...
|
||||
|
@ -34,6 +34,8 @@
|
||||
#define F_STATOF_ST 151
|
||||
#define F_STATOBLC 152
|
||||
#define F_STATOCHI 153
|
||||
#define F_CODELAB 154
|
||||
#define F_DESCELAB 155
|
||||
|
||||
#define F_STATOI_MOD_1 201
|
||||
#define F_STATOI_MOD_2 202
|
||||
|
@ -292,7 +292,7 @@ END
|
||||
STRING F_STATO_PROVV 1
|
||||
BEGIN
|
||||
PROMPT 44 17 "Stato "
|
||||
FIELD S3
|
||||
FIELD S3[1,1]
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO_PROVV
|
||||
DISPLAY "Stato" CODTAB
|
||||
@ -1231,6 +1231,35 @@ BEGIN
|
||||
FIELD B11
|
||||
END
|
||||
|
||||
STRING F_CODELAB 8
|
||||
BEGIN
|
||||
PROMPT 2 12 "Codice "
|
||||
FLAG "U"
|
||||
FIELD S3[5,12]
|
||||
CHECKTYPE NORMAL
|
||||
USE %ELD
|
||||
INPUT CODTAB F_CODELAB
|
||||
DISPLAY "Codice@10" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODELAB CODTAB
|
||||
OUTPUT F_DESCELAB S0
|
||||
HELP "Codice dell'elaborazione differita da eseguire"
|
||||
END
|
||||
|
||||
STRING F_DESCELAB 50
|
||||
BEGIN
|
||||
PROMPT 20 12 ""
|
||||
CHECKTYPE SEARCH
|
||||
WARNING "E' necessario specificare un valore"
|
||||
USE %ELD KEY 2
|
||||
INPUT S0 F_DESCELAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODELAB
|
||||
END
|
||||
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
Loading…
x
Reference in New Issue
Block a user