Patch level : 10.0 patch 767
Files correlati : ve6.exe Ricompilazione Demo : [ ] Commento : Fatturazione per Codice cliente a cui fatturare sul documento Corretta fatturazione bolle dava un errore di protezione Dalla versione 3.2 git-svn-id: svn://10.65.10.50/trunk@20596 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
919156201f
commit
c10c38a69b
163
ve/ve6200.cpp
163
ve/ve6200.cpp
@ -1,4 +1,5 @@
|
||||
#include <progind.h>
|
||||
//#include <progind.h>
|
||||
#include <recset.h>
|
||||
|
||||
#include "velib04.h"
|
||||
#include "ve6200.h"
|
||||
@ -56,7 +57,7 @@ bool TFatturazione_bolle_app::process(TIndwin& iw, TElaborazione & eld,
|
||||
|
||||
void TFatturazione_bolle_app::process_by_cli(const TMask& m)
|
||||
{
|
||||
TIndwin iw(0, "Inizializzazione ...\n ", TRUE, FALSE, 60);
|
||||
TIndwin iw(0, "Inizializzazione...\n ", TRUE, FALSE, 60);
|
||||
|
||||
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
||||
const int anno = data_elab.year();
|
||||
@ -109,7 +110,7 @@ void TFatturazione_bolle_app::process_by_cli(const TMask& m)
|
||||
|
||||
void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m)
|
||||
{
|
||||
TIndwin iw(0, "Inizializzazione ...\n ", TRUE, FALSE, 60);
|
||||
TIndwin iw(0, "Inizializzazione...\n ", TRUE, FALSE, 60);
|
||||
|
||||
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
||||
const int anno = data_elab.year();
|
||||
@ -163,7 +164,7 @@ void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m)
|
||||
|
||||
void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||
{
|
||||
TIndwin iw(0, "Inizializzazione ...\n ", TRUE, FALSE, 60);
|
||||
TIndwin iw(0, TR("Inizializzazione...\n "), TRUE, FALSE, 60);
|
||||
|
||||
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
||||
const int anno = data_elab.year();
|
||||
@ -199,8 +200,8 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||
for (int c = 0; c < tot_cli && !iw.iscancelled(); c++)
|
||||
{
|
||||
const long codcli = clienti[c]; // Codice cliente in esame
|
||||
msg = "Elaborazione dei documenti del cliente ";
|
||||
msg << codcli << " ...";
|
||||
msg = TR("Elaborazione dei documenti del cliente");
|
||||
msg << ' ' << codcli << "...";
|
||||
iw.set_text(msg); // Messaggio sul cliente
|
||||
do_events(); // Attende visualizzazione
|
||||
|
||||
@ -216,17 +217,17 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||
const int agente = doc.get_int(DOC_CODAG);
|
||||
if (agente > 0)
|
||||
{
|
||||
if (da > 0 && agente < da) to_del = TRUE;
|
||||
if (aa > 0 && agente > aa) to_del = TRUE;
|
||||
if (da > 0 && agente < da) to_del = true;
|
||||
if (aa > 0 && agente > aa) to_del = true;
|
||||
}
|
||||
const TString8 zona = doc.get(DOC_ZONA);
|
||||
if (zona.not_empty())
|
||||
if (zona.full())
|
||||
{
|
||||
if (dz.not_empty() && zona < dz) to_del = TRUE;
|
||||
if (az.not_empty() && zona > az) to_del = TRUE;
|
||||
if (dz.not_empty() && zona < dz) to_del = true;
|
||||
if (az.not_empty() && zona > az) to_del = true;
|
||||
}
|
||||
if (to_del)
|
||||
din.destroy(i);
|
||||
list.destroy(i);
|
||||
}
|
||||
const int items = list.items();
|
||||
for (int j = 0; j < items; j++)
|
||||
@ -237,6 +238,134 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||
delete e;
|
||||
}
|
||||
|
||||
void TFatturazione_bolle_app::process_by_fatt(const TMask& m)
|
||||
{
|
||||
TWait_cursor hourglass;
|
||||
|
||||
TElaborazione* e = elab(m.get(F_CODICE_ELAB));
|
||||
TElaborazione& eld = *e;
|
||||
TToken_string tipidoc(24), statidoc(10);
|
||||
eld.tipi_validi(tipidoc);
|
||||
eld.stati_validi(statidoc);
|
||||
|
||||
const TTipo_documento t(eld.tipo_iniziale(0));
|
||||
const char tipocffatt = t.tipocf() == 'C' ? 'F' : 'C';
|
||||
|
||||
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
||||
const int anno = data_elab.year();
|
||||
long dc = m.get_long(F_CODICE_CLIFO_DA);
|
||||
long ac = m.get_long(F_CODICE_CLIFO_A);
|
||||
|
||||
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
||||
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
||||
const TString& dz = m.get(F_CODICE_ZONA_DA);
|
||||
const TString& az = m.get(F_CODICE_ZONA_A);
|
||||
|
||||
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
||||
const long dn = codnum.full() ? m.get_long(F_NUMERO_DOCUMENTO_DA) : 0;
|
||||
const long an = codnum.full() ? m.get_long(F_NUMERO_DOCUMENTO_A) : 0;
|
||||
|
||||
TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
||||
if (!dd.ok())
|
||||
dd = TDate(1,1,anno);
|
||||
TDate ad = m.get_date(F_DATA_DOCUMENTO_A);
|
||||
if (!ad.ok())
|
||||
ad = data_elab;
|
||||
|
||||
const int nkey = (dn > 0 || an > 0) ? 1 : 3;
|
||||
TString query;
|
||||
query << "USE DOC KEY " << nkey << " SELECT (TIPOCFFATT=\"" << tipocffatt << "\")";
|
||||
|
||||
if (dc > 0 || ac > 0)
|
||||
query << "&&(BETWEEN(CODCFFATT," << dc << ',' << ac << "))";
|
||||
|
||||
query << "&&(BETWEEN(DATADOC," << dd.date2ansi() << ',' << ad.date2ansi() << "))";
|
||||
|
||||
if (da > 0 || aa > 0)
|
||||
query << "&&(BETWEEN(CODAG," << da << "," << aa << "))";
|
||||
|
||||
if (dz.full() || az.full())
|
||||
query << "&&(BETWEEN(ZONA,\"" << dz << "\",\"" << az << "\"))";
|
||||
|
||||
if (nkey == 3 && codnum.full())
|
||||
query << "&&(CODNUM=\"" << codnum << "\")";
|
||||
|
||||
query << "\nBY " << DOC_CODCFFATT;
|
||||
if (eld.usa_doc_rif())
|
||||
query << ' ' << DOC_DATADOCRIF;
|
||||
|
||||
if (nkey == 1)
|
||||
{
|
||||
query << "\nFROM PROVV=D ANNO=" << anno << " CODNUM=" << codnum << " NDOC=" << dn;
|
||||
query << "\nTO PROVV=D ANNO=" << anno << " CODNUM=" << codnum << " NDOC=" << an;
|
||||
}
|
||||
else
|
||||
{
|
||||
query << "\nFROM DATADOC=" << dd.date2ansi();
|
||||
query << "\nTO DATADOC=" << ad.date2ansi();
|
||||
}
|
||||
|
||||
|
||||
TISAM_recordset docs(query);
|
||||
const TRectype& head = docs.cursor()->curr();
|
||||
|
||||
TProgind iw(docs.items(), "Elaborazione documenti da fatturare", true, true);
|
||||
|
||||
long last_clifo = 0; // Ultimo cliente elaborato
|
||||
TLista_documenti din; // Lista dei documenti dell'ultimo cliente
|
||||
|
||||
|
||||
for (bool ok = docs.move_first(); ok; ok = docs.move_next())
|
||||
{
|
||||
const long clifo = docs.get(DOC_CODCFFATT).as_int();
|
||||
if (clifo > 0 && clifo >= dc && (clifo <= ac || ac <= 0)) // Cliente da fatturare non nullo e valido
|
||||
{
|
||||
if (clifo != last_clifo) // Cambio cliente
|
||||
{
|
||||
if (din.items() > 0) // Ci sono documenti da elaborare?
|
||||
{
|
||||
process(iw, eld, din, data_elab); // Elaborali ...
|
||||
din.destroy(-1); // ... e poi buttali
|
||||
}
|
||||
last_clifo = clifo;
|
||||
}
|
||||
|
||||
if (!iw.addstatus(1))
|
||||
break;
|
||||
|
||||
// Controlla se il documento e' in uno stato valido per l'elaborazione
|
||||
const TString4 tipodoc = head.get(DOC_TIPODOC);
|
||||
const TString4 statodoc = head.get(DOC_STATO);
|
||||
for (int i = tipidoc.items()-1; i>=0; i--)
|
||||
{
|
||||
if (tipodoc == tipidoc.get(i) && statodoc == statidoc.get(i))
|
||||
{
|
||||
din.add(head);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Termina l'elaborazione dei documenti dell'ultimo cliente
|
||||
if (din.items() > 0 && !iw.iscancelled())
|
||||
process(iw, eld, din, data_elab);
|
||||
|
||||
delete e;
|
||||
}
|
||||
|
||||
bool TFatturazione_bolle_app::clifo_da_fatt(const TMask& m) const
|
||||
{
|
||||
TElaborazione* e = elab(m.get(F_CODICE_ELAB));
|
||||
TFatturazione_bolle& eld = *(TFatturazione_bolle*)e;
|
||||
|
||||
const bool yes = eld.change_clifo();
|
||||
|
||||
delete e;
|
||||
|
||||
return yes;
|
||||
}
|
||||
|
||||
void TFatturazione_bolle_app::main_loop()
|
||||
{
|
||||
TMask m("ve6200a");
|
||||
@ -250,21 +379,29 @@ void TFatturazione_bolle_app::main_loop()
|
||||
TConfig cfg(CONFIG_DITTA, "ve");
|
||||
cfg.set("FATBOLSEL", _default_selection = select_from);
|
||||
}
|
||||
|
||||
if (m.get(F_ORDINAMENTO) == "R")
|
||||
process_by_ragsoc(m);
|
||||
else
|
||||
{
|
||||
if (clifo_da_fatt(m))
|
||||
{
|
||||
process_by_fatt(m);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (select_from == "D")
|
||||
process_by_doc(m);
|
||||
else
|
||||
process_by_cli(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int ve6200 (int argc, char **argv)
|
||||
{
|
||||
TFatturazione_bolle_app a;
|
||||
a.run (argc, argv, "Fatturazione Bolle");
|
||||
a.run (argc, argv, TR("Fatturazione Bolle"));
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -2,8 +2,8 @@
|
||||
#include <applicat.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MASK_H
|
||||
#include <mask.h>
|
||||
#ifndef __PROGIND_H
|
||||
#include <progind.h>
|
||||
#endif
|
||||
|
||||
#include "velib.h"
|
||||
@ -17,11 +17,14 @@ protected:
|
||||
virtual bool create();
|
||||
virtual void main_loop();
|
||||
virtual TFatturazione_bolle * elab(const TString & cod) const { return new TFatturazione_bolle(cod);}
|
||||
|
||||
|
||||
bool clifo_da_fatt(const TMask& m) const;
|
||||
bool process(TIndwin& iw, TElaborazione & eld, TLista_documenti& din, const TDate& data_elab);
|
||||
|
||||
public:
|
||||
void process_by_cli(const TMask& m);
|
||||
void process_by_ragsoc(const TMask& m);
|
||||
void process_by_doc(const TMask& m);
|
||||
void process_by_fatt(const TMask& m);
|
||||
};
|
||||
|
||||
|
@ -107,8 +107,8 @@ BEGIN
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C"
|
||||
INPUT CODCF F_CODICE_CLIFO_DA
|
||||
DISPLAY "Codice cliente," CODCF
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Cliente" CODCF
|
||||
DISPLAY "Ragione sociale@60" RAGSOC
|
||||
OUTPUT F_CODICE_CLIFO_DA CODCF
|
||||
GROUP 1
|
||||
END
|
||||
|
Loading…
x
Reference in New Issue
Block a user