Ejemplo n.º 1
0
        /// <summary>
        /// True if "selectable" and with "no chidren"
        /// </summary>
        /// <returns></returns>
        override public bool CanSelect()
        {
            if (!row_exists())
            {
                return(false);
            }
            //if (selectable_level_field == null) return true;
            DataRow Lev = LevelRow();

            if (Lev == null)
            {
                return(false);
            }
            //if (Lev[selectable_level_field].ToString().ToLower() == "n") return false;
            byte flag = CfgFn.GetNoNullByte(Lev["flag"]);

            if ((flag & 2) == 0)
            {
                return(false);
            }
            if (HasAutoChildren())
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 2
0
        private bool TipoNumerico(object codicelivello)
        {
            string filter = QHC.CmpEq("nlevel", codicelivello);

            DataRow[] Res = DS.inventorysortinglevel.Select(filter);
            if (Res.Length != 1)
            {
                return(false);
            }
            byte flag = CfgFn.GetNoNullByte(Res[0]["flag"]);

            if ((flag & 1) == 0)
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 3
0
        void FillTxtTipoIncasso()
        {
            //string codetipo = DS.proceeds.Rows[0]["kind"].ToString().ToUpper();
            byte flag = CfgFn.GetNoNullByte(DS.proceeds.Rows[0]["flag"]);

            if ((flag & 4) != 0)
            {
                txtTipoIncasso.Text = "Misto";
            }
            if ((flag & 1) != 0)
            {
                txtTipoIncasso.Text = "Competenza";
            }
            if ((flag & 2) != 0)
            {
                txtTipoIncasso.Text = "Residui";
            }
        }
Ejemplo n.º 4
0
        private bool TipoNumerico(object codicelivello)
        {
            DataRow[] Res = DS.sortinglevel.Select(QHC.CmpEq("nlevel", codicelivello));
            if (Res.Length != 1)
            {
                return(false);
            }
            int tipocodice = CfgFn.GetNoNullByte(Res[0]["flag"]) & 1;

            if (tipocodice == 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// True if "selectable" and with "no chidren"
        /// </summary>
        /// <returns></returns>
        override public bool CanSelect()
        {
            if (!row_exists())
            {
                return(false);
            }
            DataRow Lev  = LevelRow();
            byte    flag = CfgFn.GetNoNullByte(Lev["flag"]);

            if ((flag & 2) == 0)
            {
                return(false);
            }
            if (HasAutoChildren())
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 6
0
        private bool Operativo(DataRow R)
        {
            if (R == null)
            {
                return(false);
            }
            object livellorow = R["nlevel"];
            string filter     = QHC.CmpEq("nlevel", livellorow);

            DataRow[] Res = DS.inventorysortinglevel.Select(filter);
            if (Res.Length != 1)
            {
                return(false);
            }
            byte flag = CfgFn.GetNoNullByte(Res[0]["flag"]);

            if ((flag & 2) == 0)
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 7
0
        override public bool IsValid(DataRow R, out string errmess, out string errfield)
        {
            if (!base.IsValid(R, out errmess, out errfield))
            {
                return(false);
            }
            //byte flag = Convert.ToByte(R["flag"]);
            //bool fulfilled = (flag & 1) == 1;
            //if (fulfilled) {
            //    string messaggio = "Attenzione!, impostando il flag 'Regolarizza disposizione di pagamento già effettuata' " +
            //        " il movimento sarà nascosto nella stampa della distinta di trasmissione a meno che non venga impostato " +
            //        " il parametro MostraMovGiaTrasmessi a S, dal bottone Altri Parametri, in tal caso il movimento verrà visualizzato su sfondo grigio";
            //    DialogResult RES = MessageBox.Show(messaggio, "ATTENZIONE", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
            //    if (RES == DialogResult.Cancel) {
            //        errmess = "";
            //        errfield = "flag";
            //        return false;
            //    }
            //}

            //Check CIN
            if (R.Table.DataSet.Tables["expense"] != null)
            {
                byte fasefine = CfgFn.GetNoNullByte(R.Table.DataSet.Tables["expense"].ExtendedProperties["fasefine"]);

                byte fasemax = CfgFn.GetNoNullByte(GetSys("maxexpensephase"));
                if (fasefine == fasemax || fasefine == 0)
                {
                    //if (R["idpaymethod"] == DBNull.Value && R["nbill"]==DBNull.Value) {
                    //    errmess = "Non è stata selezionata nessun tipo di modalità pagamento";
                    //    errfield = "idpaymethod";
                    //    return false;
                    //}
                    //Lunghezza del BBAN = 1 (CIN) + 5 (ABI) + 5(CAB) + 12 (C/C) = 23
                    bool cinCorretto = CfgFn.CheckCIN(R["cin"].ToString(),
                                                      R["idcab"].ToString(),
                                                      R["idbank"].ToString(),
                                                      R["cc"].ToString());

                    //Se il CIN non è corretto non è ammesso l'IBAN italiano
                    if (!cinCorretto && (R["iban"].ToString().Length >= 2) && R["iban"].ToString().StartsWith("IT"))
                    {
                        errmess  = "Poichè il CIN non è corretto, il codice IBAN deve essere vuoto";
                        errfield = "iban";
                        return(false);
                    }

                    //Se l'iban c'è ed è italiano, deve essere di 27 caratteri
                    if (cinCorretto && ((R["iban"].ToString() != "") && R["iban"].ToString().ToUpper().StartsWith("IT") &&
                                        R["iban"].ToString().Length != 27))
                    {
                        errmess  = "Il codice IBAN deve essere composto da 27 caratteri";
                        errfield = "iban";
                        return(false);
                    }

                    //Se il cin è corretto e c'è l'iban italiano, l'iban deve essere coerente con cin/cc/abi/cab
                    if (cinCorretto && R["iban"].ToString().ToUpper().StartsWith("IT"))
                    {
                        string bban2 = R["cin"].ToString().ToUpper()
                                       + R["idbank"]
                                       + R["idcab"]
                                       + R["cc"];
                        string iban2 = CfgFn.calcolaIBAN("IT", bban2);
                        if (R["iban"].ToString() != iban2)
                        {
                            errmess  = "Il codice IBAN non è coerente con i campi CIN, CAB, ABI, CC";
                            errfield = "iban";
                            return(false);
                        }
                    }

                    //Se l'iban c'è ed è straniero deve avere il codice di controllo corretto
                    if (R["iban"].ToString().StartsWith("IT") == false &&
                        R["iban"].ToString() != "" &&
                        CfgFn.verificaIban(R["iban"].ToString()) == false)
                    {
                        errmess  = "Il codice IBAN non è valido (codice di controllo errato)";
                        errfield = "iban";
                        return(false);
                    }



                    //Check CIN - scatta solo se sto cambiando qualcosa tra cin/abi/cab/cc
                    if (
                        //(R["flagstandard",DataRowVersion.Current].ToString()=="S")
                        //&&
                        (R.RowState == DataRowState.Added ||
                         (
                             (R["cin", DataRowVersion.Current].ToString() != R["cin", DataRowVersion.Original].ToString())
                             ||
                             (R["idcab", DataRowVersion.Current].ToString() != R["idcab", DataRowVersion.Original].ToString())
                             ||
                             (R["cc", DataRowVersion.Current].ToString() != R["cc", DataRowVersion.Original].ToString())
                             ||
                             (R["idbank", DataRowVersion.Current].ToString() != R["idbank", DataRowVersion.Original].ToString())
                         )
                        )
                        )
                    {
                        //Se il cin c'è deve essere giusto.
                        if (R["cin"].ToString().Trim() != "")
                        {
                            if (!CfgFn.CheckCIN(R["cin"].ToString(),
                                                R["idcab"].ToString(),
                                                R["idbank"].ToString(),
                                                R["cc"].ToString()))
                            {
                                errmess  = "Il CIN inserito non corrisponde ai dati immessi. Se il CIN non è noto, è meglio non inserirlo.";
                                errfield = "cin";
                                return(false);
                            }
                        }
                        else
                        {
                            //Se il cin non c'è fa dei controlli generici sul resto

                            //ABI/CAB in descrizione
                            string descr = R["paymentdescr"].ToString().Trim().ToUpper();
                            if (descr.IndexOf("ABI") >= 0 && descr.IndexOf("CAB") >= 0)
                            {
                                errmess  = "Ci sono dei campi appositi per ABI/CAB, dunque non vanno messi nella descrizione.";
                                errfield = "paymentdescr";
                                return(false);
                            }

                            //CC  in descrizione
                            if (descr.IndexOf("C/C") >= 0 && R["cc"].ToString().Trim() == "")
                            {
                                errmess  = "C'è un campo apposito per il C/C, che dunque non va messo nella descrizione.";
                                errfield = "paymentdescr";
                                return(false);
                            }

                            //Se non c'è nulla va bene
                            if (R["idcab"].ToString().Trim() == "" &&
                                R["idbank"].ToString().Trim() == "" &&
                                R["cc"].ToString().Trim() == ""
                                )
                            {
                                return(true);
                            }

                            //Se ci sono abi/cab, il cc deve essere di 12 caratteri
                            if (R["idcab"].ToString().Trim() != "" &&
                                R["idbank"].ToString().Trim() != "" &&
                                R["cc"].ToString() != "" &&
                                R["cc"].ToString().Length != 12)
                            {
                                DialogResult RES = MessageBox.Show("Il CC risulta ERRATO in quanto dovrebbe essere completato con degli zeri iniziali. Procedo comunque?", "Dati incoerenti", MessageBoxButtons.OKCancel);
                                if (RES == DialogResult.Cancel)
                                {
                                    errfield = "cc";
                                    return(false);
                                }
                            }


                            if (R["idcab"].ToString().Trim() != "" ||
                                R["idbank"].ToString().Trim() != ""
                                // ||R["cc"].ToString() != ""   omesso poiché per i cc postali si mette il cc ma non il cin
                                )
                            {
                                DialogResult RES = MessageBox.Show("Non è stato inserito il CIN. E' normalmente necessario inserire ABI,CAB,CC,CIN per non incorrere in sanzioni bancarie. Procedo comunque?", "Dati incoerenti", MessageBoxButtons.OKCancel);
                                if (RES == DialogResult.Cancel)
                                {
                                    errfield = "cin";
                                    return(false);
                                }
                            }
                        }
                    }
                    return(true);
                }
            }
            return(true);
        }
Ejemplo n.º 8
0
        override public DataRow Get_New_Row(DataRow ParentRow, DataTable T)
        {
            DataTable Levels = T.DataSet.Tables["inventorysortinglevel"];

            if (Levels == null)
            {
                return(null);
            }
            RowChange.ClearMySelector(T, "paridinv");
            bool         linear = false;
            CQueryHelper QHC    = new CQueryHelper();
            int          level;
            string       codprefix;

            if (ParentRow != null)
            {
                level     = Convert.ToInt32(ParentRow["nlevel"]) + 1;
                codprefix = ParentRow["codeinv"].ToString();
                //SetDefault(T, "flag", ParentRow["flag"]);
            }
            else
            {
                level     = 1;
                codprefix = "";
                SetDefault(T, "paridinv", DBNull.Value);
            }
            int levelmax = CfgFn.GetNoNullInt32(Levels.Compute("max(nlevel)", null));

            if (level > levelmax)
            {
                MessageBox.Show("Non è possibile inserire un livello inferiore a quello selezionato");
                return(null);
            }
            int len = 6;

            //string kind = "A";
            DataRow[] levrow = Levels.Select(QHC.CmpEq("nlevel", level));

            if (levrow.Length != 1)
            {
                return(null);
            }

            len = Convert.ToInt32(levrow[0]["codelen"].ToString());
            byte flag = CfgFn.GetNoNullByte(levrow[0]["flag"]);

            if ((flag & 4) == 0)   //manuale
            {
                linear = true;
            }

            T.Columns["codeinv"].ExtendedProperties["length"] = codprefix.Length + len;

            SetDefault(T, "nlevel", level);

            RowChange.MarkAsAutoincrement(T.Columns["idinv"], null, null, 4);

            if ((flag & 1) != 0)  // automatica
            {
                SetDefault(T, "codeinv", codprefix);
                RowChange.ClearAutoIncrement(T.Columns["codeinv"]);
            }
            else
            {
                RowChange.MarkAsAutoincrement(T.Columns["codeinv"],
                                              null, codprefix, len, linear);
            }
            return(base.Get_New_Row(ParentRow, T));
        }
Ejemplo n.º 9
0
        public void MetaData_AfterRowSelect(DataTable T, DataRow R)
        {
            if (T == null)
            {
                return;
            }
            if (T.TableName == "intrastatcode" && Meta.DrawStateIsDone)
            {
                if (R != null && !Meta.IsEmpty)
                {
                    DataRow Curr = DS.invoicedetail.Rows[0];
                    HelpForm.SetComboBoxValue(cmbmeasure, R["idintrastatmeasure"]);
                    Curr["idintrastatmeasure"] = R["idintrastatmeasure"];
                }
            }
            if (T.TableName == "invoicekind")
            {
                if ((R == null) || (R["flag"] == DBNull.Value))
                {
                    grpRiga.Visible          = true;
                    grpRigaContratto.Visible = true;
                    return;
                }

                string AoV  = VeroTipoFatturaAV();
                string AVAR = (CfgFn.GetNoNullByte(R["flag"]) & 4) != 0 ? "S" : "N";
                if (AVAR == "S")
                {
                    grpInvMain.Visible = true;
                }
                else
                {
                    grpInvMain.Visible = false;
                }


                if (AoV == "A")
                {
                    grpRiga.Visible          = true;
                    grpRigaContratto.Visible = false;

                    txtEsercizioIva.Tag        = "expense_iva.ymov";
                    txtNumeroIva.Tag           = "expense_iva.nmov";
                    txtEsercizioImponibile.Tag = "expense_taxable.ymov";
                    txtNumImponibile.Tag       = "expense_taxable.nmov";

                    lblPercIndeduc.Visible = true;
                    txtPercIndeduc.Visible = true;
                    lblIvaIndedEUR.Visible = true;
                    txtImpDeducEUR.Visible = true;
                }

                if (AoV == "V")
                {
                    grpRiga.Visible          = false;
                    grpRigaContratto.Visible = true;

                    txtEsercizioIva.Tag        = "income_iva.ymov";
                    txtNumeroIva.Tag           = "income_iva.nmov";
                    txtEsercizioImponibile.Tag = "income_taxable.ymov";
                    txtNumImponibile.Tag       = "income_taxable.nmov";

                    lblPercIndeduc.Visible = false;
                    txtPercIndeduc.Visible = false;
                    lblIvaIndedEUR.Visible = false;
                    txtImpDeducEUR.Visible = false;
                }
                ImpostaControlliSiope(AoV);
            }
        }
Ejemplo n.º 10
0
        private void enableControls(bool abilita)
        {
            bool readOnly = !abilita;

            chkexception12.Enabled       = abilita;
            chkmove12.Enabled            = abilita;
            rdbBeniintra12.Enabled       = abilita;
            rdbServiziintra12.Enabled    = abilita;
            gBoxIvaKind.Enabled          = abilita;
            gboxUPB.Enabled              = abilita;
            gBoxupbIVA.Enabled           = abilita;
            gboxclass1.Enabled           = abilita;
            gboxclass2.Enabled           = abilita;
            gboxclass3.Enabled           = abilita;
            gboxCompetenza.Enabled       = abilita;
            grpCausale.Enabled           = abilita;
            grpRipartizioneCosti.Enabled = abilita;
            btnDocumentoIva.Enabled      = abilita;
            gboxCompetenza.Enabled       = abilita;
            grpRiga.Enabled              = abilita;
            grpRigaContratto.Enabled     = abilita;
            grpLiquidazioneIva.Enabled   = abilita;
            gboxIntra.Enabled            = abilita;
            grpServizi.Enabled           = abilita;
            rdbBeni.Enabled              = abilita;
            rdbServizi.Enabled           = abilita;
            gboxva3.Enabled              = abilita;
            gboxListino.Enabled          = abilita;
            chkListDescription.Enabled   = abilita;
            btnListino.Enabled           = abilita;
            gboxComunicazioni.Enabled    = abilita;
            grpCupCig.Enabled            = abilita;
            if (DS.invoicedetail.Rows.Count > 0)
            {
                string filter = Meta.QHC.CmpEq("idinvkind", DS.invoicedetail.Rows[0]["idinvkind"]);
                byte   flag   = CfgFn.GetNoNullByte(Meta.Conn.DO_READ_VALUE("invoicekind", filter, "flag"));


                if ((flag & 4) != 0)
                {
                    grpInvMain.Visible = true;
                }
                else
                {
                    grpInvMain.Visible = false;
                }
            }
            grpInvMain.Enabled                 = abilita;
            txtYinvMain.ReadOnly               = readOnly;
            txtNinvMain.ReadOnly               = readOnly;
            txtQuantitaConfezioni.ReadOnly     = readOnly;
            txtImponibile.ReadOnly             = readOnly;
            txtSconto.ReadOnly                 = readOnly;
            txtDescrizione.ReadOnly            = readOnly;
            txtAppunti.ReadOnly                = readOnly;
            txtDescrPadre.ReadOnly             = readOnly;
            txtWeight.ReadOnly                 = readOnly;
            txtImpostaEUR.ReadOnly             = readOnly;
            txtImpDeducEUR.ReadOnly            = readOnly;
            txtListino.ReadOnly                = readOnly;
            grpNoleggioLeasing.Enabled         = abilita;
            grpDettaglioSpesometro.Enabled     = abilita;
            cmbTipocessioneprestazione.Enabled = abilita;
            txtRiferimentoNormativo.ReadOnly   = readOnly;
            grpPcc.Enabled = abilita;
            txtEsercizioImpegno.ReadOnly            = readOnly;
            txtNumImpegno.ReadOnly                  = readOnly;
            txtEsercAxBudget.ReadOnly               = readOnly;
            txtNumAxBudget.ReadOnly                 = readOnly;
            chkBollaDoganale.Enabled                = abilita;
            chkSpeseAnticipateSpedizioniere.Enabled = abilita;
            txtCodiceBollettinoUnivoco.ReadOnly     = readOnly;
            gboxCausaleBilancioEntrata.Enabled      = abilita;
            gboxProfessionale.Enabled               = abilita;
            grpBoxSiopeEP.Enabled = abilita;
        }
Ejemplo n.º 11
0
        public override bool IsValid(DataRow R, out string errmess, out string errfield)
        {
            if (!base.IsValid(R, out errmess, out errfield))
            {
                return(false);
            }
            string topublish  = "";
            string totransmit = "";

            if (R["idreg"] == DBNull.Value)
            {
                errmess  = "Specificare l'incaricato";
                errfield = "idreg";
                return(false);
            }
            if (R["idserviceregistrykind"] != DBNull.Value)
            {
                topublish  = Conn.DO_READ_VALUE("serviceregistrykind", QHS.CmpEq("idserviceregistrykind", R["idserviceregistrykind"]), "topublish").ToString();
                totransmit = Conn.DO_READ_VALUE("serviceregistrykind", QHS.CmpEq("idserviceregistrykind", R["idserviceregistrykind"]), "totransmit").ToString();
            }
            if ((totransmit == "") || (totransmit == "S"))
            {
                if (R["employkind"] == DBNull.Value)
                {
                    errmess  = "Specificare il Tipo Incaricato";
                    errfield = "employkind";
                    return(false);
                }
                ///tipologia società impostata
                if (R["idconsultingkind"] != DBNull.Value)
                {
                    #region  tipologia società impostata
                    string tipcons = (string)R["idconsultingkind"];


                    // x un consulente con Tipologia Persona fisica
                    if ((R["flaghuman"].ToString() == "S") && (R["employkind"].ToString().ToUpper() != "D"))
                    {
                        if ((R["cf"] == DBNull.Value) && (R["flagforeign"].ToString().ToUpper() != "S"))
                        {
                            errmess  = "Per un Consulente (con tipolgia Persona Fisica) il Codice fiscale è obbligatorio. Inserirlo nel modulo Anagrafica.";
                            errfield = "cf";
                            return(false);
                        }
                        if (R["surname"] == DBNull.Value)
                        {
                            errmess  = "Per un Consulente (con tipolgia Persona Fisica) il Cognome è obbligatorio. Inserirlo nel modulo Anagrafica.";
                            errfield = "surname";
                            return(false);
                        }
                        if (R["forename"] == DBNull.Value)
                        {
                            errmess  = "Per un Consulente (con tipolgia Persona Fisica) il Nome è obbligatoro. Inserirlo nel modulo Anagrafica.";
                            errfield = "forename";
                            return(false);
                        }
                        if ((R["flagforeign"].ToString().ToUpper() != "S") && (R["p_iva"] == DBNull.Value) && (R["cf"] == DBNull.Value))
                        {
                            errmess = "Per un Consulente (con tipolgia Persona Fisica) è necessario specificare " +
                                      "o la Partita IVA o il Codice Fiscale";
                            errfield = "p_iva" + "cf";
                            return(false);
                        }
                        if ((R["flagforeign"].ToString().ToUpper() == "S") && (R["birthdate"] == DBNull.Value))
                        {
                            errmess  = "Per i consulenti esteri la Data di Nascita è obbligatoria. Inserirla nel modulo Anagrafica.";
                            errfield = "birthdate";
                            return(false);
                        }
                    }


                    // x un consulente con Tipologia Società
                    if ((R["flaghuman"].ToString() != "S") && (R["employkind"].ToString().ToUpper() != "D"))
                    {
                        // Per un consulente Persona giuridica, non estero, il CF è obbligatorio task 5972
                        if ((R["cf"] == DBNull.Value) && (R["flagforeign"].ToString().ToUpper() != "S"))
                        {
                            errmess  = "Per un Consulente (Persona Giuridica) il Codice fiscale è obbligatorio. Inserirlo nel modulo Anagrafica.";
                            errfield = "cf";
                            return(false);
                        }

                        if (R["title"] == DBNull.Value)
                        {
                            errmess  = "Per una Società la Denominazione è obbligatorio";
                            errfield = "title";
                            return(false);
                        }
                        if ((R["flagforeign"].ToString().ToUpper() != "S") && (R["codcity"] == DBNull.Value))
                        {
                            errmess  = "Per una Società italiana il Codice Comune Sede è obbligatorio";
                            errfield = "title";
                            return(false);
                        }
                        if ((R["p_iva"] == DBNull.Value) && (R["flagforeign"].ToString().ToUpper() != "S"))
                        {
                            errmess  = "Per una Società la Partita IVA è obbligatoria. Inserirla nel modulo Anagrafica.";
                            errfield = "p_iva";
                            return(false);
                        }
                    }

                    #endregion
                }
                // x un consulente
                if (R["employkind"].ToString().ToUpper() != "D")
                {
                    if (R["idconsultingkind"] == DBNull.Value && R["flaghuman"].ToString() == "N")
                    {
                        errmess  = "Per un Consulente è obbligatorio specificare la Tipologia";
                        errfield = "idconsultingkind";
                        return(false);
                    }
                    if (R["description"] == DBNull.Value)
                    {
                        errmess  = "Per un Consulente è obbligatorio specificare la descrizione dell'incarico";
                        errfield = "description";
                        return(false);
                    }
                    if (R["referencesemester"] == DBNull.Value)
                    {
                        errmess  = "Per un Consulente è obbligatorio specificare il semestre di Riferimento";
                        errfield = "referencesemester";
                        return(false);
                    }
                    if (R["expectedamount"] == DBNull.Value)
                    {
                        errmess  = "Per un Consulente è obbligatorio specificare l'importo previsto";
                        errfield = "expectedamount";
                        return(false);
                    }
                    if ((!R["referencesemester"].Equals(1)) && (!R["referencesemester"].Equals(2)))
                    {
                        errmess  = "Il Semestre di Riferimento deve avere valore '1' o '2' ";
                        errfield = "referencesemester";
                        return(false);
                    }
                    if (R["idacquirekind"] == DBNull.Value)//
                    {
                        errmess  = "Per un Consulente è obbligatorio specificare la Modalità di acquisizione";
                        errfield = "idacquirekind";
                        return(false);
                    }
                    else
                    {
                        string active = Conn.DO_READ_VALUE("acquirekind",
                                                           QHS.AppAnd(QHS.CmpEq("idacquirekind", R["idacquirekind"]),
                                                                      QHS.CmpEq("ayear", R["yservreg"])), "active").ToString();
                        if (active != "S")
                        {
                            errmess  = "La Modalità di acquisizione deve essere attiva nell'esercizio dell'incarico";
                            errfield = "idacquirekind";
                            return(false);
                        }
                    }

                    if (R["idapcontractkind"] == DBNull.Value)
                    {
                        errmess  = "Per un Consulente è obbligatorio specificare il Tipo Rapporto";
                        errfield = "idapcontractkind";
                        return(false);
                    }
                    else
                    {
                        string active = Conn.DO_READ_VALUE("apcontractkind",
                                                           QHS.AppAnd(QHS.CmpEq("idapcontractkind", R["idapcontractkind"]),
                                                                      QHS.CmpEq("ayear", R["yservreg"])), "active").ToString();
                        if (active != "S")
                        {
                            errmess  = "Il Tipo Rapporto deve essere attivo nell'esercizio dell'incarico";
                            errfield = "idapcontractkind";
                            return(false);
                        }
                    }
                    if (CfgFn.GetNoNullInt32(R["yservreg"]) < 2011)
                    {
                        if (R["idfinancialactivity"] == DBNull.Value)
                        {
                            errmess  = "Per un Consulente è obbligatorio specificare l'Attività economica";
                            errfield = "idfinancialactivity";
                            return(false);
                        }
                        else
                        {
                            string active = Conn.DO_READ_VALUE("financialactivity",
                                                               QHS.AppAnd(QHS.CmpEq("idfinancialactivity", R["idfinancialactivity"]),
                                                                          QHS.CmpEq("ayear", R["yservreg"])), "active").ToString();
                            if (active != "S")
                            {
                                errmess  = "l'Attività economica deve essere attiva nell'esercizio dell'incarico";
                                errfield = "idfinancialactivity";
                                return(false);
                            }
                        }
                    }

                    if ((R["idapfinancialactivity"] == DBNull.Value) && (R["idfinancialactivity"] == DBNull.Value))
                    {
                        errmess = "Per un Consulente è obbligatorio scegliere l'Attività economica in base alla data di affidamento dell'Incarico";
                        return(false);
                    }

                    if ((R["idapfinancialactivity"] == DBNull.Value) && (CfgFn.GetNoNullInt32(R["yservreg"]) >= 2013))
                    {
                        errmess  = "Per un Consulente è obbligatorio specificare l'Attività economica";
                        errfield = "idapfinancialactivity";
                        return(false);
                    }

                    if (R["regulation"] == DBNull.Value)
                    {
                        errmess = "Per un Consulente è obbligatorio specificare se per la modalità di selezione "
                                  + "si è fatto riferimento ad un regolamento all'uopo adottato dall'amministrazione";
                        errfield = "regulation";
                        return(false);
                    }
                    //Task 4828
                    //if (R["expectationsdate"] == DBNull.Value) {
                    //    errmess = "Per un Consulente è necessario specificare la Data Affidamento incarico";
                    //    errfield = "expectationsdate";
                    //    return false;
                    //}
                }
                // x un dipendente
                if (R["employkind"].ToString().ToUpper() == "D")
                {
                    if ((R["idconsultingkind"] == DBNull.Value) &&
                        ((R["idapregistrykind"].ToString() == "5") || (R["idapregistrykind"].ToString() == "6")))
                    {
                        errmess  = "Per un conferente ( se Persona Giuridica ) è obbligatorio la Tipologia Azienda.";
                        errfield = "idconsultingkind";
                        return(false);
                    }

                    if (R["annotation"] == DBNull.Value)
                    {
                        errmess  = "Per un Dipendente la Relazione Accompagnatoria è obbligatoria";
                        errfield = "annotation";
                        return(false);
                    }

                    if (R["idapmanager"] == DBNull.Value)
                    {
                        errmess  = "Per un Dipendente la Qualifica è obbligatoria";
                        errfield = "idapmanager";
                        return(false);
                    }

                    if (R["surname"] == DBNull.Value)
                    {
                        errmess  = "Per un Dipendente il Cognome è obbligatorio. Inserirlo nel modulo Anagrafica.";
                        errfield = "surname";
                        return(false);
                    }
                    if (R["forename"] == DBNull.Value)
                    {
                        errmess  = "Per un Dipendente il Nome è obbligatorio. Inserirlo nel modulo Anagrafica.";
                        errfield = "forename";
                        return(false);
                    }
                    if (R["cf"] == DBNull.Value)
                    {
                        errmess  = "Per un Dipendente il Codice fiscale è obbligatorio. Inserirlo nel modulo Anagrafica.";
                        errfield = "cf";
                        return(false);
                    }
                    //Vedi task 4830
                    //if (R["authorizationdate"] == DBNull.Value) {
                    //    errmess = "Per un Dipendente la Data autorizzazione è obbligatoria";
                    //    errfield = "authorizationdate";
                    //    return false;
                    //}

                    if (R["idapregistrykind"] == DBNull.Value)
                    {
                        errmess  = "Per un Dipendente la Tipologia dell'ente Conferente è obbligatorio.";
                        errfield = "idapregistrykind";
                        return(false);
                    }

                    if (R["idapactivitykind"] == DBNull.Value)
                    {
                        errmess  = "Per un Dipendente l'Oggetto dell'incarico è obbligatorio";
                        errfield = "idapactivitykind";
                        return(false);
                    }

                    //Controlli sul Conferente del dipendente:

                    //1	PUBBLICO
                    //3	PRIVATO - PERSONA FISICA CON CF RILASCIATO IN ITALIA
                    //4	PRIVATO - PERSONA FISICA SENZA CF RILASCIATO IN ITALIA
                    //5	PRIVATO - PERSONA GIURIDICA CON CF RILASCIATO IN ITALIA
                    //6	PRIVATO - PERSONA GIURIDICA SENZA CF RILASCIATO IN ITALIA
                    if ((R["idapregistrykind"].ToString() == "1") || (R["idapregistrykind"].ToString() == "5") || (R["idapregistrykind"].ToString() == "6"))
                    {
                        //Persona giuridica
                        if (R["pa_title"] == DBNull.Value)
                        {
                            errmess  = "Per un Dipendente la Denominazione dell'ente Conferente è obbligatoria. Inserirlo nel modulo Anagrafica.";
                            errfield = "pa_title";
                            return(false);
                        }
                        if ((R["conferring_flagforeign"].ToString().ToUpper() != "S") && (R["conferring_codcity"] == DBNull.Value))
                        {
                            errmess  = "Per Conferente/Persona Giuridica (non estero) il Codice Comune Sede è obbligatorio";
                            errfield = "title";
                            return(false);
                        }
                    }
                    if ((R["idapregistrykind"].ToString() == "1") || (R["idapregistrykind"].ToString() == "3") || (R["idapregistrykind"].ToString() == "5"))
                    {
                        if (R["pa_cf"] == DBNull.Value)
                        {
                            errmess  = "E' necessario specificare il Codice Fiscale dell'Ente Conferente";
                            errfield = "pa_cf";
                            return(false);
                        }
                    }
                    if ((R["idapregistrykind"].ToString() == "3") || (R["idapregistrykind"].ToString() == "4"))
                    {
                        if (R["conferring_surname"] == DBNull.Value)
                        {
                            errmess  = "Per un Conferente/Persona fisica il Cognome è obbligatorio. Inserirlo nel modulo Anagrafica.";
                            errfield = "conferring_surname";
                            return(false);
                        }
                        if (R["conferring_forename"] == DBNull.Value)
                        {
                            errmess  = "Per un Conferente/Persona fisica il Nome è obbligatorio. Inserirlo nel modulo Anagrafica.";
                            errfield = "conferring_forename";
                            return(false);
                        }
                        if (R["conferring_birthdate"] == DBNull.Value)
                        {
                            errmess  = "Per un Conferente/Persona fisica la Data di nascita è obbligatoria. Inserirla nel modulo Anagrafica.";
                            errfield = "conferring_birthdate";
                            return(false);
                        }
                        if (R["conferring_flagforeign"] == DBNull.Value)
                        {
                            errmess  = "Per un Conferente/Persona fisica è necessario specificare se Estero o meno.";
                            errfield = "conferring_flagforeign";
                            return(false);
                        }
                        if (R["conferring_gender"] == DBNull.Value)
                        {
                            errmess  = "Per un Conferente/Persona fisica è necessario specificare il sesso. Inserirlo nel modulo Anagrafica.";
                            errfield = "conferring_gender";
                            return(false);
                        }
                    }
                }//Fine dipendenti
                 // x entrambi

                if (R["rulespecifics"].ToString().ToUpper() == "S")
                {
                    if (R["idreferencerule"] == DBNull.Value)
                    {
                        errmess  = "E' necessario specificare il Riferimento Normativo";
                        errfield = "idreferencerule";
                        return(false);
                    }
                    if (R["articlenumber"] == DBNull.Value)
                    {
                        errmess  = "E' necessario specificare il numero dell'articolo del Riferimento Normativo";
                        errfield = "articlenumber";
                        return(false);
                    }

                    if (R["referencedate"] == DBNull.Value)
                    {
                        errmess  = "E' necessario specificare la data del Riferimento Normativo";
                        errfield = "referencedate";
                        return(false);
                    }

                    if (R["article"] == DBNull.Value)
                    {
                        errmess  = "E' necessario specificare l'Articolo del Riferimento Normativo";
                        errfield = "article";
                        return(false);
                    }
                }
                //Solo per i Dipendenti la data inizio è obbligatoria, per i consulente è stata resa facoltativa in seguito al task 4872.
                if ((R["employkind"].ToString().ToUpper() == "D") && (R["start"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare la Data inizio";
                    errfield = "start";
                    return(false);
                }
                if (R["stop"] != DBNull.Value && R["start"] != DBNull.Value)
                {
                    DateTime dataInizio = (DateTime)R["start"];
                    DateTime dataFine   = (DateTime)R["stop"];
                    if (dataInizio > dataFine)
                    {
                        errmess  = "La data di fine deve essere identica o successiva a quella di inizio";
                        errfield = "stop";
                        return(false);
                    }
                }

                if (R["pa_code"] == DBNull.Value)
                {
                    errmess  = "E' necessario specificare il Codice Ente. Andare in Compensi - Anagrafe delle Prestazioni - Ente";
                    errfield = "pa_code";
                    return(false);
                }
                // Data autorizzazione o data affidamento devono essere precedenti o uguali alla data inizio.
                if ((R["authorizationdate"] != DBNull.Value) && (R["start"] != DBNull.Value))
                {
                    DateTime dataInizio         = (DateTime)R["start"];
                    DateTime dataAutorizzazione = (DateTime)R["authorizationdate"];
                    if (dataAutorizzazione > dataInizio)
                    {
                        errmess  = "La Data Conferimento/Autorizzazione deve essere precedente o uguale alla Data inizio.";
                        errfield = "stop";
                        return(false);
                    }
                }
                if ((R["expectationsdate"] != DBNull.Value) && (R["start"] != DBNull.Value))
                {
                    DateTime dataInizio         = (DateTime)R["start"];
                    DateTime dataAutorizzazione = (DateTime)R["expectationsdate"];
                    if (dataAutorizzazione > dataInizio)
                    {
                        errmess  = "La Data Affidamento deve essere precedente o uguale alla Data inizio.";
                        errfield = "stop";
                        return(false);
                    }
                }
            }//Fine controllo sulla trasmissione

            if (topublish == "S")
            {
                if ((R["employkind"].ToString().ToUpper() == "D") && (R["description"] == DBNull.Value))
                {
                    errmess  = "Per un Dipendente è obbligatorio specificare la descrizione dell'incarico, per la pubblicazione dei dati sul sito Web Istituzionale";;
                    errfield = "description";
                    return(false);
                }
                DataTable Tserviceregistrykind = Conn.RUN_SELECT("serviceregistrykind", "*", null, QHS.CmpEq("idserviceregistrykind", R["idserviceregistrykind"]), null, true);

                byte flagconferringstructure = 0;
                flagconferringstructure = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagconferringstructure"]);
                if (((flagconferringstructure & 2) != 0) && (R["conferringstructure"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare la Struttura Conferente,  per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "conferringstructure";
                    return(false);
                }

                byte flagordinancelink = 0;
                flagordinancelink = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagordinancelink"]);
                if (((flagordinancelink & 2) != 0) && (R["ordinancelink"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare il Link al decreto di conferimento dell’incarico,  per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "ordinancelink";
                    return(false);
                }

                byte flagauthorizingstructure = 0;
                flagauthorizingstructure = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagauthorizingstructure"]);
                if (((flagauthorizingstructure & 2) != 0) && (R["authorizingstructure"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare la Struttura che autorizza,  per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "authorizingstructure";
                    return(false);
                }

                byte flagauthorizinglink = 0;
                flagauthorizinglink = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagauthorizinglink"]);
                if (((flagauthorizinglink & 2) != 0) && (R["authorizinglink"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare il Link all’atto di autorizzazione,  per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "authorizinglink";
                    return(false);
                }

                byte flagactreference = 0;
                flagactreference = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagactreference"]);
                if (((flagactreference & 2) != 0) && (R["actreference"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare il Riferimento dell’atto di conferimento,  per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "actreference";
                    return(false);
                }

                byte flagannouncementlink = 0;
                flagannouncementlink = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagannouncementlink"]);
                if (((flagannouncementlink & 2) != 0) && (R["announcementlink"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare il Link al bando,  per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "announcementlink";
                    return(false);
                }
                byte flagotherservice = 0;
                flagotherservice = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagotherservice"]);
                if (((flagotherservice & 2) != 0) && (R["otherservice"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare Altri incarichi o cariche in enti di diritto privato finanziati da P.A.,  per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "otherservice";
                    return(false);
                }
                byte flagprofessionalservice = 0;
                flagprofessionalservice = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagprofessionalservice"]);
                if (((flagprofessionalservice & 2) != 0) && (R["professionalservice"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare Eventuali attività professionali per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "professionalservice";
                    return(false);
                }

                byte flagcomponentsvariable = 0;
                flagcomponentsvariable = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagcomponentsvariable"]);
                if (((flagcomponentsvariable & 2) != 0) && (R["componentsvariable"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare le eventuali componenti variabili del compenso per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "componentsvariable";
                    return(false);
                }

                byte flagemploytime = 0;
                flagemploytime = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagemploytime"]);
                if (((flagemploytime & 2) != 0) && (R["employtime"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare la Durata incarica per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "employtime";
                    return(false);
                }
                byte flagcertinterestconflicts = 0;
                flagcertinterestconflicts = CfgFn.GetNoNullByte(Tserviceregistrykind.Rows[0]["flagcertinterestconflicts"]);
                if (((flagcertinterestconflicts & 2) != 0) && (R["certinterestconflicts"] == DBNull.Value))
                {
                    errmess  = "E' necessario specificare l' Attestazione conflitti di interesse per la pubblicazione dei dati sul sito Web Istituzionale";
                    errfield = "certinterestconflicts";
                    return(false);
                }
                //Vedi task 4830
                //if (R["authorizationdate"] == DBNull.Value) {
                //    errmess = "Inserire la Data autorizzazione per la pubblicazione dei dati.";
                //    errfield = "authorizationdate";
                //    return false;
                //}
                if (R["idapactivitykind"] == DBNull.Value)
                {
                    errmess  = "Inserire l'Oggetto dell'incarico per la pubblicazione dei dati sul sito Web Istituzionale.";
                    errfield = "idapactivitykind";
                    return(false);
                }
                //Vedi task 4828
                //if (R["expectationsdate"] == DBNull.Value) {
                //    errmess = "Inserire la Data Affidamento incarico per la publicazione dei dati.";
                //    errfield = "expectationsdate";
                //    return false;
                //}

                //task 6234: si richiede che il controllo non scatti per dipendenti dello stesso ente
                if (R["idapcontractkind"] == DBNull.Value && (R["employkind"].ToString().ToUpper() != "D"))
                {
                    errmess  = "Specificare il Tipo Rapporto per la pubblicazione dei dati sul sito Web Istituzionale.";
                    errfield = "idapcontractkind";
                    return(false);
                }
            }//fine pubblicazione

            return(true);
        }//IsValid
Ejemplo n.º 12
0
        bool GeneraScritture()
        {
            if (MessageBox.Show("Si vuole procedere alla generazione delle scritture in partita doppia ?", "Avviso",
                                MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
                return(false);
            }
            DataTable storeunloaddetail = Conn.CreateTableByName("storeunloaddetail", "*");

            foreach (DataRow rDetail in Tinvoicedetail.Select())
            {
                EP_functions EP = new EP_functions(Meta.Dispatcher);
                if (!EP.attivo)
                {
                    return(false);
                }

                string filter = QHS.AppAnd(QHS.CmpEq("idstoreunload", rDetail["idstoreunload"]), QHS.CmpEq("idstoreunloaddetail", rDetail["idstoreunloaddetail"]));
                Conn.RUN_SELECT_INTO_TABLE(storeunloaddetail, null, filter, null, true);

                DataRow rStoreunloaddetail = storeunloaddetail.Select(filter)[0];
                EP.GetEntryForDocument(rStoreunloaddetail);

                object doc = DBNull.Value;
                doc = "Scarico n. " + rDetail["nstoreunload"].ToString();

                DataRow rr = EP.SetEntry(rDetail["description"], rDetail["adate"],
                                         doc, DBNull.Value, EP_functions.GetIdForDocument(rStoreunloaddetail));

                EP.ClearDetails(rr);

                //---------------------------------------------------------------------------------------------------
                object idreg     = rDetail["idreg"];
                object idreg_iva = idreg;
                object esercizio = Meta.GetSys("esercizio");

                DataRow currInvSetup = DS.config.Rows[0];

                object idregVersamento12 = currInvSetup["paymentagency12"];
                object idregRimborso12   = currInvSetup["refundagency12"];
                object idacc_refund12    = EP.GetAccountForIvaRefund12();
                object idacc_payment12   = EP.GetAccountForIvaPayment12();


                bool istituzionale          = (CfgFn.GetNoNullInt32(rDetail["TipoAttivita"]) == 1);
                bool deferred               = (rDetail["flagdeferred"].ToString().ToUpper() == "S");
                bool isIntraCom             = (rDetail["flagintracom"].ToString().ToUpper() != "N");// Flagintracom può valere: S-intracom, N o X-extracom.
                bool INVERTI_DEBITO_CREDITO = (istituzionale && isIntraCom);

                string filtroInvKind = QHS.CmpEq("idinvkind", rDetail["idinvkind"]);

                DataTable Tinvoicekind = Conn.RUN_SELECT("invoicekind", "*", null, filtroInvKind, null, true);
                DataRow   TipoDoc      = Tinvoicekind.Rows[0];

                filtroInvKind = QHS.AppAnd(QHS.CmpEq("ayear", Meta.GetSys("esercizio")), filtroInvKind);
                DataTable Tinvoicekindyear = Conn.RUN_SELECT("invoicekindyear", "*", null, filtroInvKind, null, true);
                DataRow   TipoDocYear      = Tinvoicekindyear.Rows[0];

                object invkind_idacc_iva          = DBNull.Value;
                object invkind_idacc_iva_intracom = DBNull.Value;

                object idacc_unabatable = DBNull.Value;
                //costo iva indetraibile (per chi calcola riga per riga e gestisce tale conto)
                if (isIntraCom)
                {
                    idacc_unabatable = TipoDocYear["idacc_unabatable_intra"];
                }
                if (!isIntraCom || idacc_unabatable == DBNull.Value)
                {
                    idacc_unabatable = TipoDocYear["idacc_unabatable"];
                }
                //conto per l'iva
                if (deferred)
                {
                    invkind_idacc_iva = (TipoDocYear["idacc_deferred"] != DBNull.Value)
                        ? TipoDocYear["idacc_deferred"] : TipoDocYear["idacc"];
                }
                else
                {
                    invkind_idacc_iva = TipoDocYear["idacc"];
                }
                //conto per l'iva di segno opposto per fatture intracom.
                if (isIntraCom)
                {
                    if (deferred)
                    {
                        invkind_idacc_iva_intracom = (TipoDocYear["idacc_deferred_intra"] != DBNull.Value)
                            ? TipoDocYear["idacc_deferred_intra"] : TipoDocYear["idacc_intra"];
                    }
                    else
                    {
                        invkind_idacc_iva_intracom = TipoDocYear["idacc_intra"];
                    }
                }

                //Per le fatture istituzionali non intracom ignora l'iva detraibileSara
                if (istituzionale && !isIntraCom)
                {
                    invkind_idacc_iva = DBNull.Value;
                }

                object invkind_idacc_discount = TipoDocYear["idacc_discount"];
                byte   flag = CfgFn.GetNoNullByte(TipoDoc["flag"]);
                string idepcontext;
                idepcontext = "FATACQ";

                if (isIntraCom && istituzionale)
                {
                    object idacc_ivapay = DBNull.Value;
                    idreg_iva    = idregVersamento12;
                    idacc_ivapay = idacc_payment12;
                    if (invkind_idacc_iva == DBNull.Value)
                    {
                        invkind_idacc_iva = idacc_ivapay;
                    }
                }

                string  filterEsercizio = QHC.CmpEq("ayear", Meta.GetSys("esercizio"));
                string  filterkind      = QHC.CmpEq("idinvkind", rDetail["idinvkind"]);
                DataRow rInvoiceKind    = Tinvoicekind.Rows[0];// è lo stesso di sopra

                double abatablerate = CfgFn.GetNoNullDouble(
                    Meta.Conn.DO_READ_VALUE("invoicekindyearview",
                                            GetData.MergeFilters(filterkind, filterEsercizio)
                                            , "abatablerate"));

                double tassocambio = CfgFn.GetNoNullDouble(CfgFn.GetNoNullDouble(rDetail["exchangerate"]));

                double R_imponibile = CfgFn.GetNoNullDouble(rDetail["taxable"]);

                double  iva         = CfgFn.GetNoNullDouble(rDetail["tax"]);
                double  quantita    = CfgFn.GetNoNullDouble(rDetail["number"]);
                double  imponibileD = CfgFn.RoundValuta(R_imponibile * quantita * tassocambio);
                decimal imponibile  = Convert.ToDecimal(imponibileD);

                double ivaindetraibile    = 0;
                double ivadetraibilelorda = 0;
                double ivadetraibile      = 0;

                if (istituzionale)
                {
                    ivaindetraibile = CfgFn.RoundValuta(iva);
                    ivadetraibile   = 0;
                }
                else
                {
                    ivaindetraibile    = CfgFn.GetNoNullDouble(rDetail["unabatable"]);
                    ivadetraibilelorda = CfgFn.RoundValuta((iva - ivaindetraibile));
                    ivadetraibile      = CfgFn.RoundValuta(ivadetraibilelorda * abatablerate);
                }
                decimal valore_iva_totale = CfgFn.GetNoNullDecimal(rDetail["tax"]);

                //iva = iva detraibile, da movimentarsi con il conto normale dell'iva (acq/vendite)
                decimal valore_iva_detraibile = CfgFn.GetNoNullDecimal(ivadetraibile);
                decimal iva_indetraibile      = valore_iva_totale - valore_iva_detraibile;

                // valore_costo = da usare unitamente al conto di costo
                //   è pari all'imponibile + iva indetraibile ove il conto dell'iva indetraibile non sia configurato
                decimal valore_costo = CfgFn.GetNoNullDecimal(imponibile);
                if (idacc_unabatable == DBNull.Value)
                {
                    valore_costo += iva_indetraibile;
                }

                if (invkind_idacc_iva == DBNull.Value && valore_iva_detraibile > 0)
                {
                    string tipo = deferred ? "differita" : "immediata";
                    //////MessageBox.Show("Non è stata trovato il conto per l'iva " + tipo + " per il tipo documento " +
                    //////    rDetail["idinvkind"].ToString());
                    valore_costo          = valore_costo + valore_iva_detraibile;
                    valore_iva_detraibile = 0;
                    //return;
                }

                if (invkind_idacc_iva == DBNull.Value && isIntraCom && istituzionale && iva_indetraibile > 0)
                {
                    //////MessageBox.Show("Non è stata trovato il conto per l'iva  per il tipo documento " +
                    //////    rDetail["idinvkind"].ToString());
                    iva_indetraibile = 0;
                }

                object idaccmotive = rDetail["idaccmotive"];
                if (idaccmotive == DBNull.Value)
                {
                    //////MessageBox.Show("Attenzione, il dettaglio " + rDetail["detaildescription"].ToString() +
                    //////    " non ha la causale!");
                    continue;
                }
                object idaccmotive_main_debit = rDetail["idaccmotivedebit"];
                if (idaccmotive_main_debit == DBNull.Value)
                {
                    idaccmotive_main_debit = idaccmotive;
                }
                DataRow[] REntries = EP.GetAccMotiveDetails(idaccmotive);
                if (REntries.Length == 0)
                {
                    //////MessageBox.Show("Non è stato configurata la causale di costo del dettaglio n." +
                    //////    rDetail["rownum"].ToString() + ". La scrittura non pareggerà.", "Errore");
                }

                //scrittura sul costo iva indetraibile (solo per gli acquisti ove conto configurato)
                // COSTO NUOVO
                if (idacc_unabatable != DBNull.Value && iva_indetraibile > 0)
                {
                    EP.EffettuaScrittura(idepcontext,
                                         iva_indetraibile,
                                         idacc_unabatable,
                                         idreg, rDetail["idupb"], rDetail["competencystart"], rDetail["competencystop"],
                                         rDetail, idaccmotive);
                }

                //scrittura su costo/ricavo (eventualmente include iva indetraibile)
                foreach (DataRow RE in REntries)
                {
                    EP.EffettuaScrittura(idepcontext,
                                         valore_costo,
                                         RE["idacc"],
                                         idreg, rDetail["idupb"], rDetail["competencystart"], rDetail["competencystop"],
                                         rDetail, idaccmotive);
                }

                // A COSTO VECCHIO sulle vecchie coordiante
                ToldIdsor.Clear();
                DataRow Roldidsor = DS.Tables["ToldIdsor"].NewRow();
                Roldidsor["idsor1"] = rDetail["invidsor1"];
                Roldidsor["idsor2"] = rDetail["invidsor2"];
                Roldidsor["idsor3"] = rDetail["invidsor3"];
                DS.Tables["ToldIdsor"].Rows.Add(Roldidsor);

                if (idacc_unabatable != DBNull.Value && iva_indetraibile > 0)
                {
                    EP.EffettuaScrittura(idepcontext,
                                         -iva_indetraibile,
                                         idacc_unabatable,
                                         idreg, rDetail["idupb"], rDetail["competencystart"], rDetail["competencystop"],
                                         Roldidsor, idaccmotive);
                }

                //scrittura su costo/ricavo (eventualmente include iva indetraibile)
                foreach (DataRow RE in REntries)
                {
                    EP.EffettuaScrittura(idepcontext,
                                         -valore_costo,
                                         RE["idacc"],
                                         idreg, rDetail["idupb"], rDetail["competencystart"], rDetail["competencystop"],
                                         Roldidsor, idaccmotive);
                }

                //---------------------------------------------------------------------------------------------------
                EP.RemoveEmptyDetails();

                MetaData MetaEntry = MetaData.GetMetaData(this, "entry");
                PostData Post      = MetaEntry.Get_PostData();

                Post.InitClass(EP.D, Meta.Conn);
                if (Post.DO_POST())
                {
                    EditEntry(EP, rDetail);
                }
            }
            return(true);
        }
Ejemplo n.º 13
0
        // VISUALIZZA E BASTA
        void VisualizzaScritturedaGenerare(DataRow rDetail)
        {
            object idreg     = rDetail["idreg"];
            object idreg_iva = idreg;
            object esercizio = Meta.GetSys("esercizio");

            if (rDetail["yinv"].ToString() != esercizio.ToString())
            {
                return;
            }
            EP_functions EP = new EP_functions(Meta.Dispatcher);

            if (!EP.attivo)
            {
                return;
            }

            DataRow currInvSetup = DS.config.Rows[0];

            object idregVersamento12 = currInvSetup["paymentagency12"];
            object idregRimborso12   = currInvSetup["refundagency12"];
            object idacc_refund12    = EP.GetAccountForIvaRefund12();
            object idacc_payment12   = EP.GetAccountForIvaPayment12();


            bool istituzionale          = (CfgFn.GetNoNullInt32(rDetail["TipoAttivita"]) == 1);
            bool deferred               = (rDetail["flagdeferred"].ToString().ToUpper() == "S");
            bool isIntraCom             = (rDetail["flagintracom"].ToString().ToUpper() != "N");// Flagintracom può valere: S-intracom, N o X-extracom.
            bool INVERTI_DEBITO_CREDITO = (istituzionale && isIntraCom);

            string filtroInvKind = QHS.CmpEq("idinvkind", rDetail["idinvkind"]);

            DataTable Tinvoicekind = Conn.RUN_SELECT("invoicekind", "*", null, filtroInvKind, null, true);
            DataRow   TipoDoc      = Tinvoicekind.Rows[0];

            filtroInvKind = QHS.AppAnd(QHS.CmpEq("ayear", Meta.GetSys("esercizio")), filtroInvKind);
            DataTable Tinvoicekindyear = Conn.RUN_SELECT("invoicekindyear", "*", null, filtroInvKind, null, true);
            DataRow   TipoDocYear      = Tinvoicekindyear.Rows[0];

            object invkind_idacc_iva          = DBNull.Value;
            object invkind_idacc_iva_intracom = DBNull.Value;

            object idacc_unabatable = DBNull.Value;

            //costo iva indetraibile (per chi calcola riga per riga e gestisce tale conto)
            if (isIntraCom)
            {
                idacc_unabatable = TipoDocYear["idacc_unabatable_intra"];
            }
            if (!isIntraCom || idacc_unabatable == DBNull.Value)
            {
                idacc_unabatable = TipoDocYear["idacc_unabatable"];
            }
            //conto per l'iva
            if (deferred)
            {
                invkind_idacc_iva = (TipoDocYear["idacc_deferred"] != DBNull.Value)
                    ? TipoDocYear["idacc_deferred"] : TipoDocYear["idacc"];
            }
            else
            {
                invkind_idacc_iva = TipoDocYear["idacc"];
            }
            //conto per l'iva di segno opposto per fatture intracom.
            if (isIntraCom)
            {
                if (deferred)
                {
                    invkind_idacc_iva_intracom = (TipoDocYear["idacc_deferred_intra"] != DBNull.Value)
                        ? TipoDocYear["idacc_deferred_intra"] : TipoDocYear["idacc_intra"];
                }
                else
                {
                    invkind_idacc_iva_intracom = TipoDocYear["idacc_intra"];
                }
            }

            //Per le fatture istituzionali non intracom ignora l'iva detraibileSara
            if (istituzionale && !isIntraCom)
            {
                invkind_idacc_iva = DBNull.Value;
            }

            byte flag = CfgFn.GetNoNullByte(TipoDoc["flag"]);

            if (isIntraCom && istituzionale)
            {
                object idacc_ivapay = DBNull.Value;
                idreg_iva    = idregVersamento12;
                idacc_ivapay = idacc_payment12;
                if (invkind_idacc_iva == DBNull.Value)
                {
                    invkind_idacc_iva = idacc_ivapay;
                }
            }

            string filterEsercizio = QHC.CmpEq("ayear", Meta.GetSys("esercizio"));
            string filterkind      = QHC.CmpEq("idinvkind", rDetail["idinvkind"]);
            //DataRow rInvoiceKind = DS.invoicekind.Select(filterkind)[0];
            DataRow rInvoiceKind = Tinvoicekind.Rows[0];// è lo stesso di sopra

            double abatablerate = CfgFn.GetNoNullDouble(
                Meta.Conn.DO_READ_VALUE("invoicekindyearview",
                                        GetData.MergeFilters(filterkind, filterEsercizio)
                                        , "abatablerate"));
            double tassocambio = CfgFn.GetNoNullDouble(CfgFn.GetNoNullDouble(rDetail["exchangerate"]));

            ////foreach (DataRow Rinvdet in DS.invoicedetail.Select())
            ////{
            double R_imponibile = CfgFn.GetNoNullDouble(rDetail["taxable"]);

            double  iva         = CfgFn.GetNoNullDouble(rDetail["tax"]);
            double  quantita    = CfgFn.GetNoNullDouble(rDetail["number"]);
            double  imponibileD = CfgFn.RoundValuta(R_imponibile * quantita * tassocambio);
            decimal imponibile  = Convert.ToDecimal(imponibileD);

            double ivaindetraibile    = 0;
            double ivadetraibilelorda = 0;
            double ivadetraibile      = 0;

            if (istituzionale)
            {
                ivaindetraibile = CfgFn.RoundValuta(iva);
                ivadetraibile   = 0;
            }
            else
            {
                ivaindetraibile    = CfgFn.GetNoNullDouble(rDetail["unabatable"]);
                ivadetraibilelorda = CfgFn.RoundValuta((iva - ivaindetraibile));
                ivadetraibile      = CfgFn.RoundValuta(ivadetraibilelorda * abatablerate);
            }
            decimal valore_iva_totale     = CfgFn.GetNoNullDecimal(rDetail["tax"]);
            decimal valore_iva_detraibile = CfgFn.GetNoNullDecimal(ivadetraibile);
            decimal iva_indetraibile      = valore_iva_totale - valore_iva_detraibile;

            // valore_costo = da usare unitamente al conto di costo
            //   è pari all'imponibile + iva indetraibile ove il conto dell'iva indetraibile non sia configurato
            decimal valore_costo = CfgFn.GetNoNullDecimal(imponibile);

            if (idacc_unabatable == DBNull.Value)
            {
                valore_costo += iva_indetraibile;
            }

            if (invkind_idacc_iva == DBNull.Value && valore_iva_detraibile > 0)
            {
                string tipo = deferred ? "differita" : "immediata";
                // I messaggi nella generazine delle scritture NON verranno visualizzati
                MessageBox.Show("Non è stata trovato il conto per l'iva " + tipo + " per il tipo documento " +
                                rDetail["idinvkind"].ToString());
                valore_costo          = valore_costo + valore_iva_detraibile;
                valore_iva_detraibile = 0;
            }

            if (invkind_idacc_iva == DBNull.Value && isIntraCom && istituzionale && iva_indetraibile > 0)
            {
                MessageBox.Show("Non è stata trovato il conto per l'iva  per il tipo documento " +
                                rDetail["idinvkind"].ToString());
                iva_indetraibile = 0;
            }

            object idaccmotive = rDetail["idaccmotive"];

            if (idaccmotive == DBNull.Value)
            {
                MessageBox.Show("Attenzione, il dettaglio " + rDetail["detaildescription"].ToString() +
                                " non ha la causale!");
                return;//continue; Diventa un return perchè siamo già nel dettaglio
            }

            DataRow[] REntries = EP.GetAccMotiveDetails(idaccmotive);
            if (REntries.Length == 0)
            {
                MessageBox.Show("Non è stato configurata la causale di costo del dettaglio n." +
                                rDetail["rownum"].ToString() + ". La scrittura non pareggerà.", "Errore");
            }

            //scrittura sul costo iva indetraibile (solo per gli acquisti ove conto configurato)
            if (idacc_unabatable != DBNull.Value && iva_indetraibile > 0)
            {
                // NON DEVE EFFETTUARE LA SCRITTURA MA DEVE INSERIRE LA RIGA NELLA TABELLA
                DataRow RigadaVisualizzare = DS.Tables["Info"].NewRow();
                foreach (DataColumn C in Tinvoicedetail.Columns)
                {
                    if (!DS.Tables["Info"].Columns.Contains(C.ColumnName))
                    {
                        continue;
                    }
                    RigadaVisualizzare[C.ColumnName] = rDetail[C.ColumnName];
                }
                RigadaVisualizzare["amount"] = iva_indetraibile;

                DS.Tables["Info"].Rows.Add(RigadaVisualizzare);
            }

            //scrittura su costo/ricavo (eventualmente include iva indetraibile)
            foreach (DataRow RE in REntries)
            {
                // NON DEVE EFFETTUARE LA SCRITTURA MA DEVE INSERIRE LA RIGA NELLA TABELLA
                DataRow RigadaVisualizzare = DS.Tables["Info"].NewRow();
                foreach (DataColumn C in Tinvoicedetail.Columns)
                {
                    if (!DS.Tables["Info"].Columns.Contains(C.ColumnName))
                    {
                        continue;
                    }
                    RigadaVisualizzare[C.ColumnName] = rDetail[C.ColumnName];
                }
                RigadaVisualizzare["amount"] = valore_costo;

                DS.Tables["Info"].Rows.Add(RigadaVisualizzare);
            }
        }