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;
|
||||
}
|
||||
|
||||
int TLista_documenti::read(char provv, char tipocf, long clifo, int anno,
|
||||
TToken_string& tipidoc, TToken_string& statidoc,
|
||||
const TDate& dd, const TDate& ad,
|
||||
|
@ -1,3 +1,6 @@
|
||||
#include <dongle.h>
|
||||
#include <modaut.h>
|
||||
|
||||
#include "velib04.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -12,7 +15,7 @@ TFatturazione_bolle::TFatturazione_bolle(const char* cod)
|
||||
void TFatturazione_bolle::tipi_validi(TToken_string& tipi) const
|
||||
{
|
||||
tipi.cut(0);
|
||||
TString16 t;
|
||||
TString4 t;
|
||||
for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; 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)
|
||||
{
|
||||
#ifdef DBG
|
||||
const TString16 tipodoc = doc_in.tipo().codice();
|
||||
const TString4 tipodoc = doc_in.tipo().codice();
|
||||
int i;
|
||||
|
||||
for (i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
|
||||
@ -131,13 +134,28 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
const bool ragg_rig = raggruppa_righe();
|
||||
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
|
||||
if (riga_uguale(0)) campi_riga.add("CODMAG");
|
||||
if (riga_uguale(1)) campi_riga.add("CODIVA");
|
||||
if (riga_uguale(2)) campi_riga.add("PREZZO|SCONTO");
|
||||
if (riga_uguale(0))
|
||||
campi_riga.add(RDOC_CODMAG);
|
||||
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++)
|
||||
{
|
||||
TRiga_documento & rin = doc_in[r];
|
||||
@ -154,13 +172,12 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
if (ddoc < data_cons || rin.get_bool(RDOC_RIGAEVASA))
|
||||
continue;
|
||||
|
||||
real q = rin.get_real(RDOC_QTA);
|
||||
|
||||
const real q = rin.get(RDOC_QTA);
|
||||
rin.put(RDOC_QTAEVASA, q);
|
||||
rin.put(RDOC_RIGAEVASA, true);
|
||||
}
|
||||
|
||||
bool elaborata = FALSE;
|
||||
bool elaborata = false;
|
||||
|
||||
// Raggruppo le righe se e' settato il flag di raggruppamento e
|
||||
// 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 ...
|
||||
{
|
||||
rout += rin; // ... sommaci la quantita' ecc.
|
||||
elaborata = TRUE; // Ricorda di averla gia' elaborata
|
||||
elaborata = true; // Ricorda di averla gia' elaborata
|
||||
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,
|
||||
const TDate& data_elab, bool interattivo)
|
||||
{
|
||||
|
||||
TWait_cursor hourglass;
|
||||
TToken_string campi_doc(128); // Lista di campi che devono essere uguali
|
||||
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)
|
||||
{
|
||||
const TFieldref * recfld = mf.field();
|
||||
|
||||
const TFieldref* recfld = mf.field();
|
||||
if (recfld != NULL)
|
||||
{
|
||||
const TString & name = recfld->name();
|
||||
const TString & val = _doc.get(name);
|
||||
const TString& val = _doc.get(name);
|
||||
set(id, val, true);
|
||||
}
|
||||
}
|
||||
@ -2746,17 +2745,17 @@ bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
|
||||
if (m.check_fields()) // Check values
|
||||
{
|
||||
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();
|
||||
|
||||
while (selection->run() == K_ENTER)
|
||||
{
|
||||
m.mask2doc();
|
||||
update_mask |= selection->elabora();
|
||||
|
||||
const bool processed = selection->elabora();
|
||||
do_checks |= processed;
|
||||
if (m.doc().stato() != stato_iniziale)
|
||||
break;
|
||||
if (update_mask)
|
||||
if (processed)
|
||||
{
|
||||
m.doc2mask(FALSE);
|
||||
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
|
||||
break;
|
||||
}
|
||||
if (update_mask)
|
||||
if (do_checks)
|
||||
{
|
||||
m.doc2mask(FALSE);
|
||||
// Provoca decodifiche necessarie
|
||||
const int last = m.id2pos(BASE_PIEDE + 1);
|
||||
for (int p = 0; p < last; p++)
|
||||
const int tutti = m.fields();
|
||||
int i;
|
||||
for (i = 0; i < tutti; i++)
|
||||
{
|
||||
TMask_field& f = m.fld(p);
|
||||
f.check(STARTING_CHECK);
|
||||
TMask_field& f = m.fld(i);
|
||||
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);
|
||||
}
|
||||
delete selection;
|
||||
|
Loading…
x
Reference in New Issue
Block a user