5d886904cb
Files correlati : cg2.exe Ricompilazione Demo : [ ] Commento : 0001605: 002416 - Pharmatex righe di sola contabilita in pagamento con saldaconto inserisco un pagamento di fattura fornitore in valuta, cui aggiungo delle righe di sola contabilità, in imputazione del fornitore mi viene calcolato un residuo, tentando di chiudere la registrazione da la mancata quadratura con la testata. Noto che sulle righe di sola contabilità non viene indicato il tipo riga e neppure le contropartite. Passaggi per riprodurre l'anomalia git-svn-id: svn://10.65.10.50/trunk@20392 c028cbd2-c16b-5b4b-a496-9718f37d4682
325 lines
12 KiB
C++
Executable File
325 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_mov_auto;
|
|
|
|
class TPrimanota_application : public TRelation_application
|
|
{
|
|
TMovimentoPN* _rel; // Relazione principale
|
|
|
|
TPagamento* _pag;
|
|
|
|
bool _ges_val, _ges_sal; // Gestione valuta e saldaconto
|
|
bool _num_cli, _num_for; // Riferimento partita allineato a destra
|
|
bool _liqdiff; // Liquidazione differita
|
|
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 _swap_mask;
|
|
|
|
bool _is_saldaconto; // saldaconto si/no (vede parametri e causale)
|
|
bool _scad_free; // posso variare liberamente le rate della fattura
|
|
bool _quadratura; // Bottone quadratura automatica per ATS
|
|
TString _perc_attesa_fld; // Percentuale del fornitore/cliente
|
|
|
|
TSaldo_agg _saldi; // Saldi da aggiornare
|
|
TPartite_array _partite; // Partite coinvolte
|
|
|
|
TMask* _msk[4]; // Maschere di query, cg, iva, occasionali
|
|
int _mode; // Modo maschera corrente
|
|
bool _as400; // Movimento trasferito da as400?
|
|
bool _sal_dirty; // Il saldaconto e' stato "toccato"?
|
|
|
|
TipoIVA _iva; // Tipo di IVA corrente
|
|
TCausale* _causale; // Causale corrente
|
|
TLibro_giornale* _giornale; // Libro giornale corrente
|
|
long _lastreg; // Numero ultima registrazione
|
|
|
|
TDate _last_dreg; // Ultima data registrazione inserita
|
|
TDate _last_dcom; // Ultima data competenza inserita
|
|
|
|
TDati_mov_auto* _automatico;// Dati per gestire incasso immediato
|
|
|
|
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 liqdiff_handler(TMask_field& f, KEY key);
|
|
static bool dataintra_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_cfpi_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 sheet_mastrino_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 linkdoc_handler(TMask_field& f, KEY k);
|
|
static bool mastrino_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);
|
|
static bool colors_handler(TMask_field& f, KEY k);
|
|
|
|
static bool quadratura_handler(TMask_field& f, KEY k); // Bottone quadratura per ATS
|
|
|
|
void reset_sheet_row(TSheet_field& s, int n);
|
|
int crea_somma_spese(TImporto& imp);
|
|
void update_saldo_riga(int r);
|
|
void link_mastrino(const TBill& bill) const;
|
|
|
|
protected: // TApplication
|
|
virtual void on_firm_change();
|
|
virtual void on_config_change();
|
|
virtual void print();
|
|
void dump_rec(TConfig & ini, const TRectype & rec, int row = 0);
|
|
void dump_fatt(TConfig& ini, TPartita & game, int rigafatt);
|
|
virtual void ini2mask(TConfig& ini, TMask& msk, bool query);
|
|
virtual void mask2ini(const TMask& msk, TConfig& ini);
|
|
virtual bool save(bool check_dirty);
|
|
|
|
bool get_mask_swap_file(TFilename& name) const;
|
|
bool force_mask_swap(const TCausale& old_caus, const TCausale& new_caus);
|
|
|
|
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 save_and_quit() const;
|
|
virtual bool is_transaction() 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_automatico(int tipo, const char* causimm); // 0=nessuno, 1=incasso, 2=regolarizzazione
|
|
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 is_saldaconto() && causale().tipomov() == 1; }
|
|
bool is_nota_credito() const { return is_saldaconto() && causale().tipomov() == 2; }
|
|
bool is_pagamento() const { return is_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 const real& cod2IVA(const TMask& m);
|
|
static real scorpora(real& imponibile, const real& percentuale);
|
|
static int get_importi_iva(const TToken_string& row, real& imp_det, real& iva_det, real& imp_ind, real& iva_ind);
|
|
static int bill2pos(const TBill& 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 TSheet_field& cgs) 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);
|
|
bool link_anal(const TMask& msk, const char* action);
|
|
|
|
public:
|
|
static int type2pos(char tipo);
|
|
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
|