From 6055e4ab1aa2feee587ea7d0441a9f73f0be799a Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 22 May 2003 15:20:01 +0000 Subject: [PATCH] Patch level : 2.0 476 Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento : MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AO20030 Se premo sulle frecce di riferimento record sul pulsante "Ricerca" apre sempre l'ultima registrazione presente ma dell'ultimo tipo documento inserito. Ad esempio se scelgo come tipo documento F01 e premo sulla freccia di puntamento all'ultimo record mi apre l'ultimo documento inserito per il tipo documento ORC. CM791064 Durante la fase di importazione fatture in CAMPO da altre procedure tramite il protocolo INI, fare in modo che se nelle righe del documento da importare viene riscontrato un articolo non esistente in anagrafica articoli, la procedura non si blocchi con la segnalazione di "Errore fatale" che obbliga a resettare il Pc , ma dare una segnalazione tipo "Manca codice articolo in anagrafica" e dare la possibilità all'utente di inserirlo direttamente dalla fase di importazione nella relativa pagina del documento ricevuto in quel momento. git-svn-id: svn://10.65.10.50/trunk@11171 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/ve0100.cpp | 32 +++++++++---- ve/ve0100.h | 1 + ve/ve0100a.uml | 23 +++++----- ve/velib02.cpp | 117 ++++++++++++++++++++++++------------------------ ve/velib06.cpp | 4 +- ve/velib06a.cpp | 32 ++++++------- 6 files changed, 114 insertions(+), 95 deletions(-) diff --git a/ve/ve0100.cpp b/ve/ve0100.cpp index fcd941dc0..b90b9590f 100755 --- a/ve/ve0100.cpp +++ b/ve/ve0100.cpp @@ -18,14 +18,15 @@ void TMotore_application::init_query_mode( TMask& m ) { disable_menu_item(M_FILE_PRINT); - if (_msk->get(F_CODNUM).empty()) + TEdit_field& cn = _msk->efield(F_CODNUM); + if (cn.empty()) { - _msk->set(F_CODNUM, _codnum); + cn.set(_codnum); if (_msk->field(F_TIPODOC).empty()) { - _msk->field(F_CODNUM).set_focusdirty(TRUE); - _msk->field(F_CODNUM).on_key(K_TAB); - _msk->field(F_CODNUM).set_dirty(FALSE); + cn.set_focusdirty(TRUE); + cn.on_key(K_TAB); + cn.set_dirty(FALSE); _msk->set(F_TIPODOC, _tipodoc, TRUE); } } @@ -469,8 +470,23 @@ void TMotore_application::ini2mask(TConfig& ini, TMask& msk, bool query) // l'autoload ?? f.insert(-1, FALSE); // Aggiunge la riga allo sheet + const bool checked = rec.get_bool(RDOC_CHECKED); - + + if (checked) + { + const TString& codart = rec.get(RDOC_CODARTMAG); + if (!codart.blank()) + { + const TRectype& art = cache().get(LF_ANAMAG, codart); + if (art.empty()) + { + error_box(FR("Articolo non valido sulla riga %d: %s"), i, (const char*)codart); + rec.zero(RDOC_CODARTMAG); + } + } + } + rec.autoload(f); f.check_row(f.items()-1, 0x2); @@ -515,6 +531,6 @@ int ve0100( int argc, char* argv[]) { TMotore_application a; - a.run( argc, argv, "Gestione documenti" ); + a.run( argc, argv, TR("Gestione documenti")); return 0; -} \ No newline at end of file +} diff --git a/ve/ve0100.h b/ve/ve0100.h index 8eea88c06..424365b95 100755 --- a/ve/ve0100.h +++ b/ve/ve0100.h @@ -49,6 +49,7 @@ class TMotore_application : public TRelation_application virtual int write( const TMask& m ); virtual int rewrite( const TMask& m ); virtual void print(); + virtual bool has_filtered_cursor() const { return TRUE; } // Funzioni da associare ad ogni procedura int user_function( int index ); diff --git a/ve/ve0100a.uml b/ve/ve0100a.uml index ffb363612..abafc6555 100755 --- a/ve/ve0100a.uml +++ b/ve/ve0100a.uml @@ -11,6 +11,16 @@ PAGE "Estremi del documento" 1 1 60 14 PROMPT 1 0 "Estremi del documento" END + LISTBOX F_PROVV 14 + BEGIN + FIELD PROVV + PROMPT 46 3 "Tipo " + ITEM "D|Definitiva " + ITEM "P|Provvisoria" + KEY 1 2 + FLAGS "P" + END + STRING F_CODNUM 4 BEGIN PROMPT 2 1 "Numerazione " @@ -82,8 +92,8 @@ PAGE "Estremi del documento" 1 1 60 14 FIELD NDOC USE LF_DOC JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF - INPUT ANNO F_ANNO SELECT INPUT PROVV F_PROVV SELECT + INPUT ANNO F_ANNO SELECT INPUT CODNUM F_CODNUM SELECT INPUT NDOC F_NDOC DISPLAY "Num." CODNUM @@ -104,16 +114,6 @@ PAGE "Estremi del documento" 1 1 60 14 FLAG "R" END - LISTBOX F_PROVV 14 - BEGIN - FIELD PROVV - PROMPT 46 3 "Tipo " - ITEM "D|Definitiva " - ITEM "P|Provvisoria" - KEY 1 2 - FLAGS "P" - END - STRING F_STATO 1 BEGIN PROMPT 69 3 "Stato " @@ -160,4 +160,5 @@ PAGE "Estremi del documento" 1 1 60 14 END ENDPAGE + ENDMASK diff --git a/ve/velib02.cpp b/ve/velib02.cpp index 5aac931ed..fb196f289 100755 --- a/ve/velib02.cpp +++ b/ve/velib02.cpp @@ -762,36 +762,36 @@ void TRiga_documento::autosave(TSheet_field & f) row.add(" ", lordo_id); f.sheet_mask().reset(FR_LORDO); } - put( "TIPORIGA", row.get( f.cid2index(FR_TIPORIGA )) ); + put( RDOC_TIPORIGA, row.get( f.cid2index(FR_TIPORIGA )) ); TString16 codmag(row.get(f.cid2index(FR_CODMAG))); codmag.left_just(3); codmag << row.get( f.cid2index(FR_CODDEP )); - put( "CODMAG", codmag); - put( "CODART", row.get( f.cid2index(FR_CODART )) ); + put( RDOC_CODMAG, codmag); + put( RDOC_CODART, row.get( f.cid2index(FR_CODART )) ); TString liv; for (int l = 0; l<4 ; l++) doc().livelli().pack_grpcode(liv,row.get(f.cid2index(FR_LIV1+l)),l+1); - put( "LIVELLO", liv); // da modificare + put( RDOC_LIVELLO, liv); // da modificare TString s(row.get(f.cid2index(FR_DESCR))); int split_pos = s.find('\n'); - const int descr_len = length("DESCR"); + const int descr_len = length(RDOC_DESCR); if (split_pos < 0 && s.len() > descr_len) split_pos = descr_len; if (split_pos > descr_len) split_pos = descr_len; if (split_pos > 0) { - put( "DESCR", s.left(split_pos)); - put("DESCLUNGA", "X"); - put("DESCEST", s.mid(split_pos)); + put(RDOC_DESCR, s.left(split_pos)); + put(RDOC_DESCLUNGA, "X"); + put(RDOC_DESCEST, s.mid(split_pos)); } else { - put("DESCR", s); - put("DESCLUNGA", ""); - zero("DESCEST"); + put(RDOC_DESCR, s); + zero(RDOC_DESCLUNGA); + zero(RDOC_DESCEST); } const int prezzo_id = f.cid2index(FR_PREZZO); @@ -802,35 +802,34 @@ void TRiga_documento::autosave(TSheet_field & f) iva(codiva).scorpora(prezzo, doc().decimals(TRUE)); const TString prezzo_str(prezzo.string()); - row.add(prezzo_str, prezzo_id); f.sheet_mask().set(FR_PREZZO, prezzo_str); } - put( "PREZZO", prezzo); - put( "UMQTA", row.get( f.cid2index(FR_UMQTA )) ); - put( "QTA", row.get( f.cid2index(FR_QTA )) ); - put( "QTAEVASA", row.get( f.cid2index(FR_QTAEVASA )) ); - put( "RIGAEVASA", row.get( f.cid2index(FR_RIGAEVASA )) ); - put( "TARA", row.get( f.cid2index(FR_TARA )) ); - put( "PNETTO", row.get( f.cid2index(FR_PNETTO )) ); - put( "NCOLLI", row.get( f.cid2index(FR_NCOLLI )) ); - put( "DAEVADERE", row.get( f.cid2index(FR_DAEVADERE )) ); - put( "SCONTO", row.get( f.cid2index(FR_SCONTO )) ); - put( "PERCPROV", row.get( f.cid2index(FR_PERCPROV )) ); - put( "IMPFISUN", row.get( f.cid2index(FR_IMPFISUN )) ); - put( "IMPFISSO", row.get( f.cid2index(FR_IMPFISSO )) ); - put( "CODIVA", codiva); - put( "ADDIVA", row.get( f.cid2index(FR_ADDIVA )) ); - put( "ASPBENI", row.get( f.cid2index(FR_ASPBENI )) ); - put( "CAUSMAG", row.get( f.cid2index(FR_CAUS )) ); + put( RDOC_PREZZO, prezzo); + put( RDOC_UMQTA, row.get( f.cid2index(FR_UMQTA )) ); + put( RDOC_QTA, row.get( f.cid2index(FR_QTA )) ); + put( RDOC_QTAEVASA, row.get( f.cid2index(FR_QTAEVASA )) ); + put( RDOC_RIGAEVASA, row.get( f.cid2index(FR_RIGAEVASA )) ); + put( RDOC_TARA, row.get( f.cid2index(FR_TARA )) ); + put( RDOC_PNETTO, row.get( f.cid2index(FR_PNETTO )) ); + put( RDOC_NCOLLI, row.get( f.cid2index(FR_NCOLLI )) ); + put( RDOC_DAEVADERE, row.get( f.cid2index(FR_DAEVADERE )) ); + put( RDOC_SCONTO, row.get( f.cid2index(FR_SCONTO )) ); + put( RDOC_PERCPROV, row.get( f.cid2index(FR_PERCPROV )) ); + put( RDOC_IMPFISUN, row.get( f.cid2index(FR_IMPFISUN )) ); + put( RDOC_IMPFISSO, row.get( f.cid2index(FR_IMPFISSO )) ); + put( RDOC_CODIVA, codiva); + put( RDOC_ADDIVA, row.get( f.cid2index(FR_ADDIVA )) ); + put( RDOC_ASPBENI, row.get( f.cid2index(FR_ASPBENI )) ); + put( RDOC_CAUSMAG, row.get( f.cid2index(FR_CAUS )) ); TString16 codmagc(row.get(f.cid2index(FR_CODMAGC))); codmagc.left_just(3); codmagc << row.get( f.cid2index(FR_CODDEPC )); - put( "CODMAGC", codmagc); - put( "DATACONS", row.get( f.cid2index(FR_DATACONS )) ); - put( "CODARTMAG", row.get( f.cid2index(FR_CODARTMAG )) ); - put( "CHECKED", row.get( f.cid2index(FR_CHECKED )) ); + put( RDOC_CODMAGC, codmagc); + put( RDOC_DATACONS, row.get( f.cid2index(FR_DATACONS )) ); + put( RDOC_CODARTMAG, row.get( f.cid2index(FR_CODARTMAG )) ); + put( RDOC_CHECKED, row.get( f.cid2index(FR_CHECKED )) ); put( RDOC_QTAGG1, row.get( f.cid2index(FR_QTAGG1 )) ); put( RDOC_QTAGG2, row.get( f.cid2index(FR_QTAGG2 )) ); put( RDOC_QTAGG3, row.get( f.cid2index(FR_QTAGG3 )) ); @@ -850,42 +849,42 @@ void TRiga_documento::autoload(TSheet_field & f) TToken_string & row = f.row(num); row.cut(0); - row.add( get( "TIPORIGA" ), f.cid2index(FR_TIPORIGA )); - const TString16 codmag(get("CODMAG")); + row.add( get( RDOC_TIPORIGA ), f.cid2index(FR_TIPORIGA )); + const TString16 codmag(get(RDOC_CODMAG)); row.add( codmag.left(3), f.cid2index(FR_CODMAG )); row.add( codmag.mid(3), f.cid2index(FR_CODDEP )); - row.add( get( "CODART" ), f.cid2index(FR_CODART )); - TString16 liv(get("LIVELLO")); + row.add( get( RDOC_CODART ), f.cid2index(FR_CODART )); + TString16 liv(get(RDOC_LIVELLO)); for (int l = 0; l<4 ; l++) row.add(doc().livelli().unpack_grpcode(liv,l+1), f.cid2index(FR_LIV1+l )); - TString s(1024); s = get("DESCR"); - if (get_bool("DESCLUNGA")) + TString s(1024); s = get(RDOC_DESCR); + if (get_bool(RDOC_DESCLUNGA)) s << get("DESCEST"); row.add(s, f.cid2index(FR_DESCR )); - row.add( get( "UMQTA" ), f.cid2index(FR_UMQTA )); - row.add( get( "PREZZO" ), f.cid2index(FR_PREZZO )); - row.add( get( "QTA" ), f.cid2index(FR_QTA )); - row.add( get( "QTAEVASA" ), f.cid2index(FR_QTAEVASA )); - row.add( get( "RIGAEVASA" ), f.cid2index(FR_RIGAEVASA )); - row.add( get( "TARA" ), f.cid2index(FR_TARA )); - row.add( get( "PNETTO" ), f.cid2index(FR_PNETTO )); - row.add( get( "NCOLLI" ), f.cid2index(FR_NCOLLI )); - row.add( get( "DAEVADERE" ), f.cid2index(FR_DAEVADERE )); - row.add( get( "SCONTO" ), f.cid2index(FR_SCONTO )); - row.add( get( "PERCPROV" ), f.cid2index(FR_PERCPROV )); - row.add( get( "IMPFISUN" ), f.cid2index(FR_IMPFISUN )); - row.add( get( "IMPFISSO" ), f.cid2index(FR_IMPFISSO )); - row.add( get( "CODIVA" ), f.cid2index(FR_CODIVA )); - row.add( get( "ADDIVA" ), f.cid2index(FR_ADDIVA )); - row.add( get( "ASPBENI" ), f.cid2index(FR_ASPBENI )); - row.add( get( "CAUSMAG" ), f.cid2index(FR_CAUS )); + row.add( get( RDOC_UMQTA ), f.cid2index(FR_UMQTA )); + row.add( get( RDOC_PREZZO ), f.cid2index(FR_PREZZO )); + row.add( get( RDOC_QTA ), f.cid2index(FR_QTA )); + row.add( get( RDOC_QTAEVASA ), f.cid2index(FR_QTAEVASA )); + row.add( get( RDOC_RIGAEVASA ), f.cid2index(FR_RIGAEVASA )); + row.add( get( RDOC_TARA ), f.cid2index(FR_TARA )); + row.add( get( RDOC_PNETTO ), f.cid2index(FR_PNETTO )); + row.add( get( RDOC_NCOLLI ), f.cid2index(FR_NCOLLI )); + row.add( get( RDOC_DAEVADERE ), f.cid2index(FR_DAEVADERE )); + row.add( get( RDOC_SCONTO ), f.cid2index(FR_SCONTO )); + row.add( get( RDOC_PERCPROV ), f.cid2index(FR_PERCPROV )); + row.add( get( RDOC_IMPFISUN ), f.cid2index(FR_IMPFISUN )); + row.add( get( RDOC_IMPFISSO ), f.cid2index(FR_IMPFISSO )); + row.add( get( RDOC_CODIVA ), f.cid2index(FR_CODIVA )); + row.add( get( RDOC_ADDIVA ), f.cid2index(FR_ADDIVA )); + row.add( get( RDOC_ASPBENI ), f.cid2index(FR_ASPBENI )); + row.add( get( RDOC_CAUSMAG ), f.cid2index(FR_CAUS )); const TString16 codmagc(get("CODMAGC")); row.add( codmagc.left(3), f.cid2index(FR_CODMAGC )); row.add( codmagc.mid(3), f.cid2index(FR_CODDEPC )); - row.add( get("DATACONS"), f.cid2index(FR_DATACONS )); - row.add( get( "CODARTMAG" ), f.cid2index(FR_CODARTMAG)); - row.add( get( "CHECKED" ), f.cid2index(FR_CHECKED)); + row.add( get( RDOC_DATACONS ), f.cid2index(FR_DATACONS )); + row.add( get( RDOC_CODARTMAG ), f.cid2index(FR_CODARTMAG)); + row.add( get( RDOC_CHECKED ), f.cid2index(FR_CHECKED)); row.add( get( RDOC_QTAGG1), f.cid2index(FR_QTAGG1)); row.add( get( RDOC_QTAGG2), f.cid2index(FR_QTAGG2)); row.add( get( RDOC_QTAGG3), f.cid2index(FR_QTAGG3)); diff --git a/ve/velib06.cpp b/ve/velib06.cpp index 35f8fa221..20d89bba2 100755 --- a/ve/velib06.cpp +++ b/ve/velib06.cpp @@ -845,9 +845,8 @@ void TDocumento_mask::update_giacenza() const TString codart = row.get(sf.cid2index(FR_CODARTMAG)); real giac, disp; - if (codart.not_empty()) + if (!codart.blank()) { - const TString& annoes = get(F_ANNO); TString16 codmag = row.get(sf.cid2index(FR_CODMAG)); const TString16 coddep = row.get(sf.cid2index(FR_CODDEP)); if (!coddep.blank()) @@ -863,6 +862,7 @@ void TDocumento_mask::update_giacenza() break; } + const TString8 annoes = get(F_ANNO); TArticolo_giacenza art(codart); giac = art.disponibilita(annoes, codmag, livello, TRUE); disp = art.disponibilita(annoes, codmag, livello, FALSE); diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp index 44f23a15b..474d0d94e 100755 --- a/ve/velib06a.cpp +++ b/ve/velib06a.cpp @@ -477,8 +477,8 @@ bool codart_handler(TMask_field& f, KEY key ) if (f.to_check(key, TRUE)) { - if (f.get().not_empty()) - row_mask.enable(FR_LIV1); + if (!f.empty()) + row_mask.enable(FR_LIV1); else { row_mask.reset(FR_LIV1); @@ -494,13 +494,10 @@ bool codart_handler(TMask_field& f, KEY key ) condv.set_testa(&mask); condv.set_riga(&row_mask); - TLocalisamfile anamag(LF_ANAMAG); - TLocalisamfile umart(LF_UMART); + TString80 codart = f.get(); + TRectype anamag = cache().get(LF_ANAMAG, codart); // anamag puo' cambiare + bool found = !anamag.empty(); - TString80 codart(f.get()); - anamag.setkey(1); - anamag.put(ANAMAG_CODART, codart); - bool found = anamag.read() == NOERR; if (found) row_mask.set(FR_CODARTMAG, codart, TRUE); else @@ -510,18 +507,17 @@ bool codart_handler(TMask_field& f, KEY key ) codalt.setkey(2); codalt.put(CODCORR_CODARTALT, codart); if (codalt.read() == NOERR) - { + { codart = codalt.get(CODCORR_CODART); - anamag.zero(); - anamag.put(ANAMAG_CODART, codart); - found = anamag.read() == NOERR; + anamag = cache().get(LF_ANAMAG, codart); + found = !anamag.empty(); if (found) row_mask.set(FR_CODARTMAG, codart, TRUE); } } row_mask.set(FR_CHECKED, "X"); if (!found) - row_mask.set(FR_CODARTMAG, "", TRUE); + row_mask.set(FR_CODARTMAG, "", TRUE); else { const TString16 lingua = mask.get(F_CODLIN); @@ -571,11 +567,17 @@ bool codart_handler(TMask_field& f, KEY key ) desc << "\n" << descest; row_mask.set(FR_DESCR, desc); - + +/* + TLocalisamfile umart(LF_UMART); umart.setkey(1); umart.zero(); umart.put(UMART_CODART, codart); if (umart.read(_isgteq) == NOERR && codart == umart.get(UMART_CODART)) +*/ + TString key; key << codart << "|1"; + const TRectype& umart = cache().get(LF_UMART, key); + if (!umart.empty()) { curr_um = umart.get(UMART_UM); curr_fc = umart.get_real(UMART_FC); @@ -586,7 +588,7 @@ bool codart_handler(TMask_field& f, KEY key ) curr_fc = 1.0; } row_mask.set(FR_UMQTA, curr_um); - upd_colli_peso_tara(row_mask, anamag.curr()); + upd_colli_peso_tara(row_mask, anamag); } condv.ricerca();