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