9bfbd8a4ad
Files correlati : cg0.exe cg0500a.msk cg2.exe cg2100s.msk Ricompilazione Demo : [ ] Commento : CM20044 Causale senza tipo documento e con tipo movimento fattura. Mi propone la pagina delle scandenze completamente vuota pur avendo indicato il codice pagamento in testata. La seguente pagina riconosce il pagamento solo se clicco sul botone di reset. CM20045 Causale senza tipo documento e con tipo movimento nota di credito. Mi lascia registrare in prima nota senza portarmi nella gestione partite per chiudere le eventuali fatture.Come faccio ? ATTENZIONE: eliminata possibilita' di creare note di credito senza tipo documento CM20046 Causale senza tipo documento e con tipo movimento fattura o nota di credito. In prima nota non viene mai controllato il totale della testata presente nel campo "Voci per saldaconto" con quanto viene indicato poi nelle righe. CM20047 Causale senza tipo documento e con tipo movimento fattura/nota di credito. Se inserisco una registrazione con tipo movimento nota credito e passo successivamente ad una registrazione con causale con tipo movimento fattura, pur mettendo il codice di pagamento, la procedura non propone la pagina delle scadenze.Questo non accade se esco dalla prima nota dopo la registrazione della nota credito e rientro per registrare la fattura. CM20048 Inserisco un pagamento a fronte di un movimento nato da causale senza tipo documento e tipo movimento fattura. Se in testa indico il numero e la data del documento va tutto bene fino a che non seleziono la rata che intendo pagare, ma quando do conferma nella finestra del pagamento, la procedura mi riporta nella maschera della prima nota senza passare da quella delle partite. Solo cliccando di nuovo su conferma, la procedura mi apre la maschera delle partite. Se non indico i riferimenti del documento sulla testata della registrazione, va tutto bene. git-svn-id: svn://10.65.10.50/trunk@11508 c028cbd2-c16b-5b4b-a496-9718f37d4682
319 lines
12 KiB
C++
Executable File
319 lines
12 KiB
C++
Executable File
#ifndef __CG2102_H
|
|
#define __CG2102_H
|
|
|
|
#ifndef __RELAPP_H
|
|
#include <relapp.h>
|
|
#endif
|
|
|
|
#ifndef __CGPAGAME_H
|
|
#include "cgpagame.h"
|
|
#endif
|
|
|
|
#ifndef __CGSALDAC_H
|
|
#include "cgsaldac.h"
|
|
#endif
|
|
|
|
#ifndef __CGLIB02_H
|
|
#include "cglib02.h"
|
|
#endif
|
|
|
|
#ifndef __CG2101_H
|
|
#include "cg2101.h"
|
|
#endif
|
|
|
|
#ifndef __CG2103_H
|
|
#include "cg2103.h"
|
|
#endif
|
|
|
|
class TDati_incasso;
|
|
|
|
class TClinton : public TBill
|
|
{
|
|
TString _cms, _fas;
|
|
|
|
public:
|
|
virtual int compare(const TSortable& obj) const;
|
|
|
|
public:
|
|
void set_commessa(const char* cms) { _cms = cms; _cms.rtrim(); }
|
|
void set_fase(const char* fas) { _fas = fas; _fas.rtrim(); }
|
|
const TString& commessa() const { return _cms; }
|
|
const TString& fase() const { return _fas; }
|
|
|
|
TClinton() { }
|
|
TClinton(TToken_string& row, bool iva = FALSE);
|
|
};
|
|
|
|
class TPrimanota_application : public TRelation_application
|
|
{
|
|
TMovimentoPN* _rel; // Relazione principale
|
|
|
|
TPagamento* _pag;
|
|
|
|
TCausale* _causale; // Causale corrente
|
|
TLibro_giornale* _giornale; // Libro giornale corrente
|
|
TipoIVA _iva; // Tipo di IVA corrente
|
|
bool _ges_val, _ges_sal; // Gestione valuta e saldaconto
|
|
bool _num_cli, _num_for; // Riferimento partita allineato a destra
|
|
bool _npart_is_prot; // Riferimento partita = n. prot. IVA anziche' doc
|
|
|
|
bool _skip_giornale_check; // Ignora controllo data stampa libro giornale
|
|
bool _skip_bollato_check; // Ignora controllo data stampa bollato
|
|
|
|
bool _savenew; // Registra e nuovo
|
|
short _firstfocus; // Primo campo della maschera a prendere il focus
|
|
|
|
bool _sheet_shown; // Lo sheet e' gia' stato visualizzato una volta?
|
|
|
|
bool _is_saldaconto; // saldaconto si/no (vede parametri e causale)
|
|
bool _scad_free; // posso variare liberamente le rate della fattura
|
|
|
|
TDati_incasso* _incasso; // Dati per gestire incasso immediato
|
|
|
|
TSaldo_agg _saldi; // Saldi da aggiornare
|
|
TPartite_array _partite; // Partite coinvolte
|
|
|
|
TMask* _msk[4]; // Maschere di query, cg, iva, occasionali
|
|
long _lastreg; // Numero ultima registrazione
|
|
int _mode; // Modo maschera corrente
|
|
bool _as400; // Movimento trasferito da as400?
|
|
|
|
TDate _last_dreg; // Ultima data registrazione inserita
|
|
TDate _last_dcom; // Ultima data competenza inserita
|
|
|
|
TBill _conto_ricavo; // Conto di ricavo del clifo
|
|
|
|
TToken_string _tmp; // Stringa temporanea da ritornare
|
|
TString_array _pag_rows; // Copia dello sheet delle rate
|
|
|
|
TEsercizi_contabili _esercizi; // Tabella degli esercizi contabili
|
|
|
|
TAssoc_array _colori; // Colori delle righe
|
|
|
|
static bool showpartite_handler(TMask_field& f, KEY k);
|
|
static bool speserimb_handler(TMask_field& f, KEY k);
|
|
static bool altrespese_handler(TMask_field& f, KEY k);
|
|
static bool abbatt_handler(TMask_field& f, KEY k);
|
|
static bool abbpass_handler(TMask_field& f, KEY k);
|
|
static bool ritprof_handler(TMask_field& f, KEY k);
|
|
static bool diffcamb_handler(TMask_field& f, KEY k);
|
|
static bool suspended_handler(TMask_field& f, KEY k);
|
|
static bool num_handler(TMask_field& f, KEY key);
|
|
static bool caus_query_handler(TMask_field& f, KEY key);
|
|
static bool caus_modify_handler(TMask_field& f, KEY key);
|
|
static bool datareg_handler(TMask_field& f, KEY key);
|
|
static bool datacomp_handler(TMask_field& f, KEY key);
|
|
static bool data74ter_handler(TMask_field& f, KEY key);
|
|
static bool datadoc_handler(TMask_field& f, KEY key);
|
|
static bool numdoc_handler(TMask_field& f, KEY key);
|
|
static bool annorif_handler(TMask_field& f, KEY key);
|
|
static bool numrif_handler(TMask_field& f, KEY key);
|
|
static bool protiva_handler(TMask_field& f, KEY key);
|
|
static bool clifo_handler(TMask_field& f, KEY key);
|
|
static bool totdoc_handler(TMask_field& f, KEY key);
|
|
static bool totdocval_handler(TMask_field& f, KEY key);
|
|
static bool ritfis_handler(TMask_field& f, KEY key);
|
|
static bool ritsoc_handler(TMask_field& f, KEY key);
|
|
static bool main_codiva_handler(TMask_field& f, KEY key);
|
|
static bool corrlire_handler(TMask_field& f, KEY key);
|
|
static bool corrvaluta_handler(TMask_field& f, KEY key);
|
|
static bool occas_code_handler(TMask_field& f, KEY key);
|
|
static bool occas_handler(TMask_field& f, KEY key);
|
|
static bool solaiva_handler(TMask_field& f, KEY key);
|
|
static bool descr_handler(TMask_field& f, KEY k);
|
|
|
|
static bool sheet_clifo_handler(TMask_field& f, KEY k);
|
|
static bool iva_sottoconto_handler(TMask_field& f, KEY k);
|
|
static bool imponibile_handler(TMask_field& f, KEY key);
|
|
static bool detrazione_handler(TMask_field& f, KEY key);
|
|
static bool codiva_handler(TMask_field& f, KEY key);
|
|
static bool imposta_handler(TMask_field& f, KEY key);
|
|
static bool dareavere_handler(TMask_field& f, KEY k);
|
|
static bool fase_handler(TMask_field& f, KEY key);
|
|
static bool cg_tipo_handler(TMask_field& f, KEY key);
|
|
static bool cg_gruppo_handler(TMask_field& f, KEY key);
|
|
static bool cg_conto_handler(TMask_field& f, KEY key);
|
|
static bool cg_sottoconto_handler(TMask_field& f, KEY key);
|
|
|
|
static bool codpag_handler(TMask_field& f, KEY key);
|
|
static bool valuta_handler(TMask_field& f, KEY key);
|
|
static bool datacambio_handler(TMask_field& f, KEY key);
|
|
static bool cambio_handler(TMask_field& f, KEY key);
|
|
static bool reset_handler(TMask_field& f, KEY key);
|
|
static bool nrate_handler(TMask_field& f, KEY key);
|
|
static bool recalc_handler(TMask_field& f, KEY key);
|
|
static bool codcab_handler(TMask_field& f, KEY key);
|
|
static bool tipopag_handler(TMask_field& f, KEY key);
|
|
static bool prorata_handler(TMask_field& f, KEY k);
|
|
|
|
static bool ratalit_handler(TMask_field& f, KEY key);
|
|
static bool rataval_handler(TMask_field& f, KEY key);
|
|
|
|
static bool iva_notify(TSheet_field& s, int r, KEY key);
|
|
static bool iva_handler(TMask_field& f, KEY key);
|
|
static bool cg_notify(TSheet_field& s, int r, KEY key);
|
|
static bool cg_handler(TMask_field& f, KEY key);
|
|
|
|
static bool pag_notify(TSheet_field& s, int r, KEY key);
|
|
static bool pag_sheet_handler(TMask_field& f, KEY key);
|
|
|
|
void reset_sheet_row(TSheet_field& s, int n);
|
|
int crea_somma_spese(TImporto& imp);
|
|
void update_saldo_riga(int r);
|
|
|
|
protected: // TApplication
|
|
virtual void on_firm_change();
|
|
virtual void on_config_change();
|
|
virtual void print();
|
|
virtual bool menu(MENU_TAG m);
|
|
virtual void ini2mask(TConfig& ini, TMask& msk, bool query);
|
|
virtual void mask2ini(const TMask& msk, TConfig& ini);
|
|
|
|
protected: // TRelation_application
|
|
virtual bool user_create();
|
|
virtual bool user_destroy();
|
|
virtual bool changing_mask(int mode);
|
|
virtual TMask* get_mask(int mode);
|
|
virtual TRelation* get_relation() const { return _rel; }
|
|
virtual void init_query_mode(TMask& m);
|
|
virtual void init_insert_mode(TMask& m);
|
|
virtual void init_modify_mode(TMask& m);
|
|
virtual bool save_and_new() const;
|
|
virtual bool get_next_key(TToken_string& key);
|
|
virtual int read(TMask& m);
|
|
virtual int write(const TMask& m);
|
|
virtual int rewrite(const TMask& m);
|
|
virtual bool remove();
|
|
virtual void write_enable(bool) {}
|
|
virtual bool protected_record(TRectype& rec);
|
|
|
|
protected:
|
|
void check_saldi();
|
|
void genera_incasso(const char* causimm);
|
|
void gioca_cambi(int force = 0x00);
|
|
|
|
TMask* load_mask(int n);
|
|
TMask& occas_mask() { return *load_mask(3); }
|
|
|
|
void mask2rel(const TMask& m);
|
|
|
|
TipoIVA iva() const { return _iva; }
|
|
char clifo() const { return iva() == iva_vendite ? 'C' : 'F'; }
|
|
bool gestione_valuta() const { return _ges_val; }
|
|
bool gestione_saldaconto() const { return _ges_sal; }
|
|
bool npart_is_prot() { return _npart_is_prot; }
|
|
|
|
bool is_saldaconto() const { return _is_saldaconto; }
|
|
bool is_fattura() const { return gestione_saldaconto() && causale().tipomov() == 1; }
|
|
bool is_nota_credito() const { return gestione_saldaconto() && causale().tipomov() == 2; }
|
|
bool is_pagamento() const { return gestione_saldaconto() && causale().tipomov() >= 3; }
|
|
bool activate_numrif(TMask& m, bool set_pag);
|
|
|
|
void fill_sheet(TMask& m) const;
|
|
void init_mask(TMask& m);
|
|
|
|
static TipoIVA reg2IVA(const char* registro, int anno);
|
|
static int type2pos(char tipo);
|
|
static const real& cod2IVA(const TMask& m);
|
|
static real scorpora(real& imponibile, const real& percentuale);
|
|
static bool detraibile(TToken_string& row);
|
|
static int bill2pos(const TBill& conto, char tipo);
|
|
static int clint2pos(const TClinton& conto, char tipo);
|
|
|
|
TipoIVA cau2IVA(const char* causale, int anno);
|
|
bool IVA2bill(const TCodiceIVA& iva, TBill& bill);
|
|
int bill2contr(const TBill& c, char sezione) const;
|
|
int bill_used(const TBill& conto) const;
|
|
TBill& ivas_bill(TBill& tc);
|
|
|
|
void load_colors();
|
|
void save_colors();
|
|
COLOR type2color(char tipor, char tipoc);
|
|
void set_type_color(char tipor, char tipoc, COLOR col);
|
|
void set_colors();
|
|
|
|
bool read_caus(const char* cod, int year);
|
|
TLibro_giornale& giornale() { return *_giornale; }
|
|
|
|
bool test_swap(bool ritsoc);
|
|
TImporto real2imp(const real& r, char tipo);
|
|
real totale_documento();
|
|
|
|
void ivas_pack();
|
|
void cgs_pack();
|
|
bool ci_sono_importi() const;
|
|
real calcola_saldo() const;
|
|
real calcola_imp() const;
|
|
|
|
void add_cgs_tot(TMask& m);
|
|
int set_cgs_row(int n, const TImporto& importo, TBill& conto, const char* desc, char tipo,
|
|
const char* cms = NULL, const char* fas = NULL);
|
|
void set_cgs_imp(int n, const TImporto& importo);
|
|
bool add_cgs_imp(int n, const TImporto& importo);
|
|
bool sub_cgs_imp(int n, const TImporto& importo);
|
|
void disable_cgs_cells(int n, char tipo);
|
|
|
|
void add_cgs_rit(bool fisc);
|
|
void generazione_righe_cg(int r);
|
|
|
|
void reset_cgs_row(int n) { reset_sheet_row(cgs(), n); }
|
|
void reset_ivas_row(int n) { reset_sheet_row(ivas(), n); }
|
|
|
|
TPagamento& pagamento() const;
|
|
|
|
void set_pagamento(const char* c, const char* d);
|
|
void set_totale_pagamento(bool update);
|
|
void reset_pagamento();
|
|
void set_scadenze(TMask& m);
|
|
void set_banche(TMask& m);
|
|
bool read_scadenze(TMask& m);
|
|
void write_scadenze(const TMask& m);
|
|
void remove_scadenze(const TMask& m, const char* rif);
|
|
void renumber_partita(TMask& m, const char* oldp, const char* newp);
|
|
void recalc_scadenze(const TDate& d);
|
|
|
|
bool test_prorata();
|
|
bool aggiusta_prorata();
|
|
|
|
int cerca_conto_cf(TBill& bill) const;
|
|
|
|
bool edit_partite(const TMask& m, int riga);
|
|
bool crea_partita(const TBill& bill, int anno, const TString& numero, int numrig, const TImporto& importo);
|
|
|
|
bool notify_cgline_deletion(TPartita& partita, long nreg, int numrig);
|
|
bool notify_cgline_deletion(int numrig);
|
|
|
|
bool is_percipient(long forn, char& tipper, long& codper) const;
|
|
long calcola_m770(int tipo_coll, real& spese, real& compenso, real& iva, real& ritfis);
|
|
bool link_m770();
|
|
bool link_cesp(const TMask& msk, const char* action);
|
|
bool link_intra(const TMask& msk, const char* action);
|
|
|
|
public:
|
|
static char row_type(const TToken_string& s);
|
|
|
|
void type2colors(char tipor, COLOR& back, COLOR& fore);
|
|
void set_type_colors(char tipor, COLOR back, COLOR fore);
|
|
void reset_colors();
|
|
|
|
TCausale& causale() const { return *_causale; }
|
|
TPartite_array& partite() { return _partite; } // Partite editate
|
|
bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp);
|
|
bool notify_edit_pagamento(TPartita& partita, TRectype& new_pag,
|
|
const TValuta& valuta, int deleting = 0);
|
|
|
|
TSheet_field& cgs() const;
|
|
TSheet_field& ivas() const;
|
|
TSheet_field& pags() const;
|
|
TString_array& pag_rows() { return _pag_rows; }
|
|
TImporto get_cgs_imp(int n) const;
|
|
|
|
TPrimanota_application();
|
|
virtual ~TPrimanota_application() { }
|
|
};
|
|
|
|
inline TPrimanota_application& app()
|
|
{ return (TPrimanota_application&)main_app(); }
|
|
|
|
#endif
|