Aggiunta la gestione di stampa N copie dei documenti.
Corretta il filtro sui documenti nel caso non vengano indicati estremi. git-svn-id: svn://10.65.10.50/trunk@3503 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2b9b39685b
commit
2badd9b34e
@ -8,6 +8,7 @@
|
||||
#include <printer.h>
|
||||
#include <utility.h>
|
||||
#include <urldefid.h>
|
||||
#include <progind.h>
|
||||
|
||||
#include "velib02.h"
|
||||
|
||||
@ -740,6 +741,7 @@ class TStampa_Doc_Vendita: public TApplication {
|
||||
TString _codnum; // codice di numerazione
|
||||
TString _provv; // stampa provvisioria
|
||||
int _anno; // anno della documentazione
|
||||
int _ncopie; // numero di copie per ogni documento
|
||||
long _dalnum, _alnum; // estremi di numerazione dei documenti
|
||||
TDate _dadata, _adata; // estremi di data dei documenti
|
||||
bool _order_by_num; // flag che indica se e' stato selezionato l'ordine principale per numero documento
|
||||
@ -852,6 +854,7 @@ bool TStampa_Doc_Vendita::create() {
|
||||
_dalnum= atol(argv(5)); // il quarto è il numero di documento di partenza
|
||||
_alnum= atol(argv(6)); // il quinto è il numero di documento di fine
|
||||
_definitiva= (strcmp(argv(7), "D")==0); // il sesto è se la stampa è definitiva (rinumerazione dei documenti)
|
||||
_ncopie = atoi(argv(8));
|
||||
_interattivo= FALSE;
|
||||
print();
|
||||
} else { // oppure lancio della maschera
|
||||
@ -885,6 +888,7 @@ int TStampa_Doc_Vendita::select() {
|
||||
_provv= m.get(F_PROVV);
|
||||
_dalnum= m.get_long(F_DA_NDOC);
|
||||
_alnum= m.get_long(F_A_NDOC);
|
||||
_ncopie = m.get_int(F_NCOPIE);
|
||||
if (_alnum == 0) _alnum = 9999999L;
|
||||
wdate = m.get(F_DA_DATADOC);
|
||||
if (wdate.not_empty()) _dadata = wdate;
|
||||
@ -926,7 +930,9 @@ void TStampa_Doc_Vendita::print() {
|
||||
doc.put("PROVV", _provv);
|
||||
doc.put("NDOC", _alnum);
|
||||
if (!_order_by_num) doc.put("DATADOC", _adata);
|
||||
doc.read(); // posiziona il file sul record
|
||||
const int err = doc.read(); // posiziona il file sul record
|
||||
if (err == _iseof) doc.last();
|
||||
else if (err == _iskeynotfound) doc.prev();
|
||||
const long num_lim_sup = doc.get_int("NDOC");
|
||||
const TDate date_lim_sup = doc.get_date("DATADOC");
|
||||
if (num_lim_sup > _alnum || (!_order_by_num && date_lim_sup < _adata))
|
||||
@ -938,7 +944,9 @@ void TStampa_Doc_Vendita::print() {
|
||||
printer().open(); // apre la stampante
|
||||
TRectype arec= doc.curr(); // copia il record di fine cursore
|
||||
cur.setregion(darec, arec); // imposta il filtro sul cursore di stampa (nell'ordine giusto :-)
|
||||
TProgind pi(cur.items(),"Stampa documenti in corso...",FALSE,TRUE,10);
|
||||
for (cur= 0; cur.pos()<cur.items(); ++cur) { // ciclo sugli elementi del cursore di stampa
|
||||
pi.addstatus(1L);
|
||||
tip.put("CODTAB", doc.get("TIPODOC")); // posiziona la tabella dei tipi di documento
|
||||
int err=tip.read(); // legge la tabella
|
||||
if (err==NOERR) { // se non ci sono errori procede con la stampa
|
||||
@ -959,7 +967,8 @@ void TStampa_Doc_Vendita::print() {
|
||||
|
||||
TDocumentoEsteso * doc_est = new TDocumentoEsteso(cur.curr()); // istanzia TDocumentoEsteso sulla testata attuale
|
||||
// Da implementare quando verra gestito il numero di copie
|
||||
// const int ncopie = doc_est->get_int("NCOPIE"); // Numero di copie da stampare per questo documento
|
||||
int ncopie = _ncopie == 0 ? doc_est->tipo().ncopie() : _ncopie; // Numero di copie da stampare per questo documento
|
||||
if (ncopie == 0) ncopie = 1;
|
||||
_form = new TDocVen_Form(nomeform, *_firmrel, doc_est); // istanzia il form, passandogli il documento. (la delete del documento e' nel ditruttore
|
||||
const TString &modulo= _form->get_module_code(); // legge dal form il codice del modulo di carta per la stampa
|
||||
if (modulo_prec.empty()) modulo_prec= modulo; // se siamo al primo passaggio la variabile di modulo precedente viene riempita
|
||||
@ -978,8 +987,8 @@ void TStampa_Doc_Vendita::print() {
|
||||
fcur.setregion(darec_r, arec_r); // setta il filtro sul cursore del form
|
||||
fcur.set_filterfunction(filter_rows); // setta il filtro per escludere alcuni tipi riga indicati nel form
|
||||
// Da implementare quando verra gestito il numero di copie
|
||||
// for (int j=0; j<ncopie; j++)
|
||||
_form->print(); // stampa il form corrente
|
||||
for (int j=0; j<ncopie; j++)
|
||||
_form->print(); // stampa il form corrente
|
||||
if (_definitiva && (numerazione_definitiva(doc) != NOERR)) { // se la stampa è definitiva viene lanciata la procedura di rinumerazione
|
||||
if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti");
|
||||
break;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#define F_CODNUM 101
|
||||
#define F_ANNO 102
|
||||
#define F_PROVV 103
|
||||
#define F_NCOPIE 104
|
||||
|
||||
#define F_DATA_O_NUM 201
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "ve1100.h"
|
||||
|
||||
PAGE "Stampa Documenti Vendita" -1 -1 40 19
|
||||
PAGE "Stampa Documenti Vendita" -1 -1 40 20
|
||||
|
||||
STRING F_CODNUM 4 4
|
||||
BEGIN
|
||||
@ -20,38 +20,45 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
RADIOBUTTON F_DATA_O_NUM 20
|
||||
BEGIN
|
||||
PROMPT 1 3 "Selezione su "
|
||||
ITEM "N|Numero" MESSAGE ENABLE,1@|CLEAR,2@
|
||||
ITEM "D|Data" MESSAGE ENABLE,2@|CLEAR,1@
|
||||
END
|
||||
|
||||
LIST F_PROVV 12
|
||||
BEGIN
|
||||
PROMPT 24 4 ""
|
||||
ITEM "P|Provvisoria"
|
||||
ITEM "D|Definitiva"
|
||||
PROMPT 1 3 "Tipo numerazione "
|
||||
ITEM "P|Provvisoria"
|
||||
ITEM "D|Definitiva"
|
||||
END
|
||||
|
||||
NUMBER F_NCOPIE 3
|
||||
BEGIN
|
||||
PROMPT 1 4 "Numero copie "
|
||||
NUM_EXPR {(#THIS_FIELD >= 0)}
|
||||
WARNING "Il numero di copie deve essere positivo"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_DATA_O_NUM 38
|
||||
BEGIN
|
||||
PROMPT 1 5 "Selezione su "
|
||||
ITEM "N|Numero documento" MESSAGE ENABLE,1@|CLEAR,2@
|
||||
ITEM "D|Data documento" MESSAGE ENABLE,2@|CLEAR,1@
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 38 5
|
||||
BEGIN
|
||||
PROMPT 1 7 "Selezione per numero"
|
||||
PROMPT 1 9 "Selezione per numero"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 38 5
|
||||
BEGIN
|
||||
PROMPT 1 12 "Selezione per data"
|
||||
PROMPT 1 14 "Selezione per data"
|
||||
END
|
||||
|
||||
NUMBER F_DA_NDOC 7 0
|
||||
BEGIN
|
||||
PROMPT 2 8 "Dal num. "
|
||||
PROMPT 2 10 "Dal num. "
|
||||
USE 33 KEY 1 SELECT (CODNUM==#F_CODNUM) && (ANNO==#F_ANNO) && (PROVV==#F_PROVV)
|
||||
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
|
||||
JOIN 13 TO 20 INTO COM=COMCF
|
||||
INPUT CODNUM F_CODNUM SELECT
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT CODNUM F_CODNUM
|
||||
INPUT ANNO F_ANNO
|
||||
INPUT NDOC F_DA_NDOC
|
||||
INPUT PROVV F_PROVV
|
||||
DISPLAY "Data@10" DATADOC
|
||||
@ -65,12 +72,12 @@ END
|
||||
|
||||
NUMBER F_A_NDOC 7 0
|
||||
BEGIN
|
||||
PROMPT 2 10 "Al num. "
|
||||
PROMPT 2 12 "Al num. "
|
||||
USE 33 KEY 1 SELECT (CODNUM==#F_CODNUM) && (ANNO==#F_ANNO) && (PROVV==#F_PROVV)
|
||||
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
|
||||
JOIN 13 TO 20 INTO COM=COMCF
|
||||
INPUT CODNUM F_CODNUM SELECT
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT CODNUM F_CODNUM
|
||||
INPUT ANNO F_ANNO
|
||||
INPUT NDOC F_A_NDOC
|
||||
INPUT PROVV F_PROVV
|
||||
COPY DISPLAY F_DA_NDOC
|
||||
@ -82,7 +89,7 @@ END
|
||||
|
||||
DATE F_DA_DATADOC
|
||||
BEGIN
|
||||
PROMPT 2 13 "Dalla data "
|
||||
PROMPT 2 15 "Dalla data "
|
||||
USE 33 KEY 3 SELECT (CODNUM==#F_CODNUM) && (ANNO==#F_ANNO) && (PROVV==#F_PROVV)
|
||||
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
|
||||
JOIN 13 TO 20 INTO COM=COMCF
|
||||
@ -98,7 +105,7 @@ END
|
||||
|
||||
DATE F_A_DATADOC
|
||||
BEGIN
|
||||
PROMPT 2 15 "Alla data "
|
||||
PROMPT 2 17 "Alla data "
|
||||
COPY USE F_DA_DATADOC
|
||||
INPUT CODNUM F_CODNUM
|
||||
INPUT ANNO F_ANNO
|
||||
|
Loading…
x
Reference in New Issue
Block a user