Patch level : 10.0 648
Files correlati : lv2.exe lv3.exe lv4.exe ve0.exe ve1.exe ve5.exe ve6.exe Ricompilazione Demo : [ ] Commento : Se il documento ha una causale di lavanderia il magazzino collegato non viene piu' lo prende dalla causale quindi) Programma per aggiornare i documenti da numero a numero sulle lavanderie (lv4 -3 ) non a menu ma per manutenzioni Per ilaria e roberto ( verificare che negli altri casi prenda il magazzino cllegato dal documento) git-svn-id: svn://10.65.10.50/trunk@20150 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
32a44eaca9
commit
89794b4b98
@ -11,6 +11,8 @@ int main(int argc, char** argv)
|
||||
lv4200(argc, argv); break; //importazione saldaconto
|
||||
case 2:
|
||||
lv4300(argc, argv); break; //importazione cespiti
|
||||
case 3:
|
||||
lv4400(argc, argv); break; //riscrittura movimenti
|
||||
case 0:
|
||||
default:
|
||||
lv4100(argc, argv); break; //importazione movimenti contabili
|
||||
|
3
lv/lv4.h
3
lv/lv4.h
@ -1,3 +1,4 @@
|
||||
int lv4100(int argc, char* argv[]); // importazione movimenti contabili
|
||||
int lv4200(int argc, char* argv[]); // importazione saldaconto
|
||||
int lv4300(int argc, char* argv[]); // importazione cespiti
|
||||
int lv4300(int argc, char* argv[]); // importazione cespiti
|
||||
int lv4400(int argc, char* argv[]); // riscrittura movimenti
|
153
lv/lv4400.cpp
Executable file
153
lv/lv4400.cpp
Executable file
@ -0,0 +1,153 @@
|
||||
#include <applicat.h>
|
||||
#include <doc.h>
|
||||
#include <mask.h>
|
||||
#include <postman.h>
|
||||
#include <progind.h>
|
||||
#include <relation.h>
|
||||
|
||||
#include "lv4400a.h"
|
||||
#include "lvlib.h"
|
||||
#include "..\ve\velib.h"
|
||||
|
||||
class TRewrite_docs_mask : public TMask
|
||||
{
|
||||
public:
|
||||
TRewrite_docs_mask() : TMask("lv4400a") { }
|
||||
virtual ~TRewrite_docs_mask() { }
|
||||
};
|
||||
|
||||
|
||||
class TRewrite_docs_change : public TSkeleton_application
|
||||
{
|
||||
|
||||
protected: // TSkeleton_application
|
||||
virtual void main_loop();
|
||||
virtual bool create();
|
||||
void update_mag(TDocumento & doc);
|
||||
|
||||
public:
|
||||
TRewrite_docs_change() { }
|
||||
virtual ~TRewrite_docs_change() { }
|
||||
};
|
||||
|
||||
bool TRewrite_docs_change::create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_OCCAS, LF_INDSP, LF_CFVEN, LF_DOC, LF_RIGHEDOC,
|
||||
LF_ANAMAG, LF_MOVMAG, LF_RMOVMAG, LF_CONDV, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_CESS,
|
||||
LF_CAUSALI, LF_RCAUSALI, 0);
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
void TRewrite_docs_change::update_mag(TDocumento & doc)
|
||||
{
|
||||
const int rows = doc.physical_rows();
|
||||
|
||||
for (int r = 1; r <= rows; r++)
|
||||
{
|
||||
TRiga_documento & row = doc[r];
|
||||
TString4 causale = row.get(RDOC_CODAGG1);
|
||||
|
||||
if (causale.full())
|
||||
{
|
||||
/* TString4 codmag(doc.clifor().vendite().get(CFV_CODMAG));
|
||||
TString4 coddep(doc.clifor().vendite().get(CFV_CODDEP));
|
||||
TString4 codmagcoll(codmag);
|
||||
TString4 coddepcoll(coddep); */
|
||||
|
||||
const TCausale_lavanderie cau(causale);
|
||||
const TCausale_magazzino rit = cau.causale_ritiro();
|
||||
const TCausale_magazzino con = cau.causale_consegna();
|
||||
|
||||
TString8 magazzino;
|
||||
TString8 magazzinoc;
|
||||
|
||||
if(rit.get("S10").full())
|
||||
magazzino = rit.get("S10").mid(0,5);
|
||||
else
|
||||
magazzino << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGN");
|
||||
|
||||
if(con.get("S10").full())
|
||||
magazzinoc = con.get("S10").mid(0,5);
|
||||
else
|
||||
magazzinoc << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGC");
|
||||
|
||||
row.put(RDOC_CODMAG, magazzino);
|
||||
row.put(RDOC_CODMAGC, magazzinoc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TRewrite_docs_change::main_loop()
|
||||
{
|
||||
TRewrite_docs_mask m;
|
||||
while (m.run() == K_ENTER)
|
||||
{
|
||||
TRelation rel(LF_DOC);
|
||||
m.autosave(rel);
|
||||
// const bool update_mags = m.get_bool(F_UPDATEMAG);
|
||||
const bool update_mags = false;
|
||||
|
||||
TRectype recini(rel.curr());
|
||||
TRectype recfin(rel.curr());
|
||||
|
||||
recini.put(DOC_NDOC, m.get(F_DANUMERO));
|
||||
recfin.put(DOC_NDOC, m.get(F_ANUMERO));
|
||||
const TString4 stato = m.get(F_STATO);
|
||||
|
||||
TString filter;
|
||||
|
||||
if (stato.full())
|
||||
filter << DOC_STATO << "==\"" << stato << "\"";
|
||||
|
||||
TCursor cur(&rel, filter, 1, &recini, &recfin);
|
||||
const long total = cur.items();
|
||||
if (total > 0)
|
||||
{
|
||||
TString msg = "Confermare l'aggiornamento di ";
|
||||
msg.add_plural(total, "documento");
|
||||
if (yesno_box(msg))
|
||||
|
||||
{
|
||||
TProgind pi(total, "Elaborazione in corso...", TRUE, TRUE, 60);
|
||||
TDocumento* doc = new TDocumento;
|
||||
rel.lfile().set_curr(doc);
|
||||
cur.freeze();
|
||||
for (cur = 0; cur.pos() < total && !pi.iscancelled(); ++cur)
|
||||
{
|
||||
pi.addstatus(1);
|
||||
if (update_mags)
|
||||
update_mag(*doc);
|
||||
doc->rewrite();
|
||||
|
||||
// Invia anche la transazione se necessario
|
||||
/* if (::can_dispatch_transaction(*doc)) // da riimplementare
|
||||
{
|
||||
TFilename tmpname; tmpname.temp();
|
||||
{ // Parentesi strategiche
|
||||
TConfig ini(tmpname, "Transaction");
|
||||
ini.set("Action", "MODIFY");
|
||||
ini.set("Firm", get_firm());
|
||||
ini.set("Mode", "A");
|
||||
TString8 paradoc; paradoc.format("%d", LF_DOC);
|
||||
ini.set_paragraph(paradoc);
|
||||
ini.set(DOC_PROVV, doc->get(DOC_PROVV));
|
||||
ini.set(DOC_ANNO, doc->get(DOC_ANNO));
|
||||
ini.set(DOC_CODNUM, doc->get(DOC_CODNUM));
|
||||
ini.set(DOC_NDOC, doc->get(DOC_NDOC));
|
||||
}
|
||||
::dispatch_transaction(*doc, tmpname);
|
||||
::remove(tmpname);
|
||||
} */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int lv4400(int argc, char* argv[])
|
||||
{
|
||||
TRewrite_docs_change a;
|
||||
a.run(argc, argv, "Aggiornamento documenti");
|
||||
return 0;
|
||||
}
|
||||
|
12
lv/lv4400a.h
Executable file
12
lv/lv4400a.h
Executable file
@ -0,0 +1,12 @@
|
||||
#define F_PROVVIS 101
|
||||
#define F_ANNO 102
|
||||
#define F_CODNUM 103
|
||||
#define F_DESNUM 104
|
||||
#define F_STATO 105
|
||||
#define F_DESCSTAT0 106
|
||||
#define F_DANUMERO 109
|
||||
#define F_ANUMERO 110
|
||||
#define F_DACLIFO 111
|
||||
#define F_ACLIFO 112
|
||||
// #define F_UPDATEMAG 113
|
||||
|
136
lv/lv4400a.uml
Executable file
136
lv/lv4400a.uml
Executable file
@ -0,0 +1,136 @@
|
||||
#include <doc.h>
|
||||
#include "lv4400a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <stdbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Cambiamento stato documenti" 0 0 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 70 4
|
||||
BEGIN
|
||||
PROMPT 1 1 "Numerazione"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_PROVVIS 35
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
ITEM "D|Definitiva"
|
||||
ITEM "P|Provvisoria"
|
||||
FLAGS "Z"
|
||||
FIELD PROVV
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 59 2 "Anno "
|
||||
FLAGS "AU"
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD ANNO
|
||||
END
|
||||
|
||||
STRING F_CODNUM 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice "
|
||||
USE %NUM
|
||||
FLAGS "U"
|
||||
INPUT CODTAB F_CODNUM
|
||||
DISPLAY "Codice Num." CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODNUM CODTAB
|
||||
OUTPUT F_DESNUM S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODNUM
|
||||
END
|
||||
|
||||
STRING F_DESNUM 50
|
||||
BEGIN
|
||||
PROMPT 16 3 ""
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 F_DESNUM
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice Num." CODTAB
|
||||
COPY OUTPUT F_CODNUM
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_STATO 1
|
||||
BEGIN
|
||||
PROMPT 2 5 "Stato "
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO
|
||||
DISPLAY "Stato documento" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO CODTAB
|
||||
OUTPUT F_DESCSTAT0 S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESCSTAT0 50 52
|
||||
BEGIN
|
||||
PROMPT 16 5 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 70 4
|
||||
BEGIN
|
||||
PROMPT 1 6 "Intervallo"
|
||||
END
|
||||
|
||||
NUMBER F_DANUMERO 7
|
||||
BEGIN
|
||||
PROMPT 2 7 "Da "
|
||||
USE LF_DOC
|
||||
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT PROVV F_PROVVIS SELECT
|
||||
INPUT CODNUM F_CODNUM SELECT
|
||||
INPUT NDOC F_DANUMERO
|
||||
DISPLAY "Num." CODNUM
|
||||
DISPLAY "Anno" ANNO
|
||||
DISPLAY "Provv" PROVV
|
||||
DISPLAY "Tipo" TIPODOC
|
||||
DISPLAY "N.Doc. " NDOC
|
||||
DISPLAY "Data Doc. " DATADOC
|
||||
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||
OUTPUT F_DANUMERO NDOC
|
||||
CHECKTYPE SEARCH
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
STRING F_DACLIFO 50 52
|
||||
BEGIN
|
||||
PROMPT 16 7 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ANUMERO 7
|
||||
BEGIN
|
||||
PROMPT 2 8 "A "
|
||||
COPY USE F_DANUMERO
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT PROVV F_PROVVIS SELECT
|
||||
INPUT CODNUM F_CODNUM SELECT
|
||||
INPUT NDOC F_ANUMERO
|
||||
COPY DISPLAY F_DANUMERO
|
||||
OUTPUT F_ANUMERO NDOC
|
||||
CHECKTYPE SEARCH
|
||||
NUM_EXPR (#F_ANUMERO==0)||(#F_ANUMERO>=#F_DANUMERO)
|
||||
WARNING "Il numero finale deve essere maggiore di quello iniziale"
|
||||
END
|
||||
|
||||
STRING F_ACLIFO 50 52
|
||||
BEGIN
|
||||
PROMPT 16 8 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
/* BOOLEAN F_UPDATEMAG 1
|
||||
BEGIN
|
||||
PROMPT 2 10 "Aggiorna i magazzini sui documenti"
|
||||
END */
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -1275,6 +1275,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
if (causcons.full())
|
||||
{
|
||||
mov[LF_RMOVMAG][j - 1].put(RMOVMAG_CODCAUS, causcons);
|
||||
mov[LF_RMOVMAG][j - 1].put(RMOVMAG_CODMAG, r.get(RDOC_CODMAGC));
|
||||
mov.reset_magc(j - 1);
|
||||
}
|
||||
else
|
||||
@ -1294,7 +1295,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
mov.add_magc("");
|
||||
rm.put(RMOVMAG_IMPIANTO, r.get(RDOC_IMPIANTO));
|
||||
rm.put(RMOVMAG_LINEA, r.get(RDOC_LINEA));
|
||||
rm.put(RMOVMAG_CODMAG, r.get(RDOC_CODMAGC));
|
||||
rm.put(RMOVMAG_CODMAG, r.get(RDOC_CODMAG));
|
||||
if (articolo && (causrit.full() ? cached_causale_magazzino(causrit).scarica_alternativi() : scarica_alt))
|
||||
{
|
||||
const TRectype art = cache().get(LF_ANAMAG, codart);
|
||||
|
Loading…
x
Reference in New Issue
Block a user