Patch level : 2.2
Files correlati : indovinala grillo Ricompilazione Demo : [ ] Commento : Migliorata fatturazione bolle in modo da preservare le commesse delle singole righe. git-svn-id: svn://10.65.10.50/trunk@13360 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
1eb3f02883
commit
2eba28d858
@ -37,6 +37,7 @@ bool TLista_documenti::find(char provv, int anno, const char * codnum, long ndoc
|
|||||||
}
|
}
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TLista_documenti::read(char provv, char tipocf, long clifo, int anno,
|
int TLista_documenti::read(char provv, char tipocf, long clifo, int anno,
|
||||||
TToken_string& tipidoc, TToken_string& statidoc,
|
TToken_string& tipidoc, TToken_string& statidoc,
|
||||||
const TDate& dd, const TDate& ad,
|
const TDate& dd, const TDate& ad,
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
#include <dongle.h>
|
||||||
|
#include <modaut.h>
|
||||||
|
|
||||||
#include "velib04.h"
|
#include "velib04.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -12,7 +15,7 @@ TFatturazione_bolle::TFatturazione_bolle(const char* cod)
|
|||||||
void TFatturazione_bolle::tipi_validi(TToken_string& tipi) const
|
void TFatturazione_bolle::tipi_validi(TToken_string& tipi) const
|
||||||
{
|
{
|
||||||
tipi.cut(0);
|
tipi.cut(0);
|
||||||
TString16 t;
|
TString4 t;
|
||||||
for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
|
for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
|
||||||
{
|
{
|
||||||
t = tipo_iniziale(i);
|
t = tipo_iniziale(i);
|
||||||
@ -38,7 +41,7 @@ void TFatturazione_bolle::stati_validi(TToken_string& stati) const
|
|||||||
bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||||
{
|
{
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
const TString16 tipodoc = doc_in.tipo().codice();
|
const TString4 tipodoc = doc_in.tipo().codice();
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
|
for (i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
|
||||||
@ -131,11 +134,26 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
const bool ragg_rig = raggruppa_righe();
|
const bool ragg_rig = raggruppa_righe();
|
||||||
if (ragg_rig)
|
if (ragg_rig)
|
||||||
{
|
{
|
||||||
campi_riga = "CODART|UMQTA"; // Uguali sempre
|
// Uguali sempre
|
||||||
|
campi_riga.add(RDOC_CODART);
|
||||||
|
campi_riga.add(RDOC_UMQTA);
|
||||||
|
// Uguali se commesse attive
|
||||||
|
if (dongle().active(CAAUT) || dongle().active(CMAUT))
|
||||||
|
{
|
||||||
|
campi_riga.add(RDOC_CODCMS);
|
||||||
|
campi_riga.add(RDOC_FASCMS);
|
||||||
|
campi_riga.add(RDOC_CODCOSTO);
|
||||||
|
}
|
||||||
// Uguali opzionalmente
|
// Uguali opzionalmente
|
||||||
if (riga_uguale(0)) campi_riga.add("CODMAG");
|
if (riga_uguale(0))
|
||||||
if (riga_uguale(1)) campi_riga.add("CODIVA");
|
campi_riga.add(RDOC_CODMAG);
|
||||||
if (riga_uguale(2)) campi_riga.add("PREZZO|SCONTO");
|
if (riga_uguale(1))
|
||||||
|
campi_riga.add(RDOC_CODIVA);
|
||||||
|
if (riga_uguale(2))
|
||||||
|
{
|
||||||
|
campi_riga.add(RDOC_PREZZO);
|
||||||
|
campi_riga.add(RDOC_SCONTO);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int r = 1; r <= doc_in.physical_rows(); r++)
|
for (int r = 1; r <= doc_in.physical_rows(); r++)
|
||||||
@ -154,13 +172,12 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
if (ddoc < data_cons || rin.get_bool(RDOC_RIGAEVASA))
|
if (ddoc < data_cons || rin.get_bool(RDOC_RIGAEVASA))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
real q = rin.get_real(RDOC_QTA);
|
const real q = rin.get(RDOC_QTA);
|
||||||
|
|
||||||
rin.put(RDOC_QTAEVASA, q);
|
rin.put(RDOC_QTAEVASA, q);
|
||||||
rin.put(RDOC_RIGAEVASA, true);
|
rin.put(RDOC_RIGAEVASA, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool elaborata = FALSE;
|
bool elaborata = false;
|
||||||
|
|
||||||
// Raggruppo le righe se e' settato il flag di raggruppamento e
|
// Raggruppo le righe se e' settato il flag di raggruppamento e
|
||||||
// se la riga non contiene solo una descrizione
|
// se la riga non contiene solo una descrizione
|
||||||
@ -176,7 +193,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
if (rin.raggruppabile(rout, campi_riga)) // Se esiste una riga compatibile ...
|
if (rin.raggruppabile(rout, campi_riga)) // Se esiste una riga compatibile ...
|
||||||
{
|
{
|
||||||
rout += rin; // ... sommaci la quantita' ecc.
|
rout += rin; // ... sommaci la quantita' ecc.
|
||||||
elaborata = TRUE; // Ricorda di averla gia' elaborata
|
elaborata = true; // Ricorda di averla gia' elaborata
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -246,7 +263,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||||
const TDate& data_elab, bool interattivo)
|
const TDate& data_elab, bool interattivo)
|
||||||
{
|
{
|
||||||
|
TWait_cursor hourglass;
|
||||||
TToken_string campi_doc(128); // Lista di campi che devono essere uguali
|
TToken_string campi_doc(128); // Lista di campi che devono essere uguali
|
||||||
campi_doc = "TIPOCF|CODCF|CODVAL|CODLIN"; // Uguali sempre
|
campi_doc = "TIPOCF|CODCF|CODVAL|CODLIN"; // Uguali sempre
|
||||||
|
|
||||||
|
@ -521,12 +521,11 @@ void TDocumento_mask::update_progs(bool stop_run)
|
|||||||
|
|
||||||
if ((page == field_page || stop_run) && id > BASE_PIEDE)
|
if ((page == field_page || stop_run) && id > BASE_PIEDE)
|
||||||
{
|
{
|
||||||
const TFieldref * recfld = mf.field();
|
const TFieldref* recfld = mf.field();
|
||||||
|
|
||||||
if (recfld != NULL)
|
if (recfld != NULL)
|
||||||
{
|
{
|
||||||
const TString & name = recfld->name();
|
const TString & name = recfld->name();
|
||||||
const TString & val = _doc.get(name);
|
const TString& val = _doc.get(name);
|
||||||
set(id, val, true);
|
set(id, val, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2746,17 +2745,17 @@ bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
|
|||||||
if (m.check_fields()) // Check values
|
if (m.check_fields()) // Check values
|
||||||
{
|
{
|
||||||
TElabora_mask* selection = new TElabora_mask(m); // No woman no stack
|
TElabora_mask* selection = new TElabora_mask(m); // No woman no stack
|
||||||
bool update_mask = FALSE;
|
bool do_checks = false;
|
||||||
const char stato_iniziale = m.doc().stato();
|
const char stato_iniziale = m.doc().stato();
|
||||||
|
|
||||||
while (selection->run() == K_ENTER)
|
while (selection->run() == K_ENTER)
|
||||||
{
|
{
|
||||||
m.mask2doc();
|
m.mask2doc();
|
||||||
update_mask |= selection->elabora();
|
const bool processed = selection->elabora();
|
||||||
|
do_checks |= processed;
|
||||||
if (m.doc().stato() != stato_iniziale)
|
if (m.doc().stato() != stato_iniziale)
|
||||||
break;
|
break;
|
||||||
if (update_mask)
|
if (processed)
|
||||||
{
|
{
|
||||||
m.doc2mask(FALSE);
|
m.doc2mask(FALSE);
|
||||||
TSheet_field& ss = m.sfield(F_SHEET);
|
TSheet_field& ss = m.sfield(F_SHEET);
|
||||||
@ -2770,17 +2769,18 @@ bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
|
|||||||
if (!m.get_bool(F_TYPE)) // non aggiunge al documento attuale
|
if (!m.get_bool(F_TYPE)) // non aggiunge al documento attuale
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (update_mask)
|
if (do_checks)
|
||||||
{
|
{
|
||||||
m.doc2mask(FALSE);
|
|
||||||
// Provoca decodifiche necessarie
|
// Provoca decodifiche necessarie
|
||||||
const int last = m.id2pos(BASE_PIEDE + 1);
|
const int tutti = m.fields();
|
||||||
for (int p = 0; p < last; p++)
|
int i;
|
||||||
|
for (i = 0; i < tutti; i++)
|
||||||
{
|
{
|
||||||
TMask_field& f = m.fld(p);
|
TMask_field& f = m.fld(i);
|
||||||
f.check(STARTING_CHECK);
|
if (f.dlg() <= BASE_PIEDE)
|
||||||
|
f.check(STARTING_CHECK);
|
||||||
}
|
}
|
||||||
for (int i = m.fields() - 1; i >= 0; i--)
|
for (i = tutti-1; i >= 0; i--)
|
||||||
m.fld(i).set_dirty(FALSE);
|
m.fld(i).set_dirty(FALSE);
|
||||||
}
|
}
|
||||||
delete selection;
|
delete selection;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user