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:
guy 2005-09-20 12:51:40 +00:00
parent 1eb3f02883
commit 2eba28d858
3 changed files with 44 additions and 26 deletions

View File

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

View File

@ -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,13 +134,28 @@ 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++)
{ {
TRiga_documento & rin = doc_in[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)) 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

View File

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