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:
alex 2010-10-06 11:41:48 +00:00
parent a9b090689a
commit 815b64014a
8 changed files with 146 additions and 31 deletions

@ -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