/// <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); }
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); }
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"; } }
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); } }
/// <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); }
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); }
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); }
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)); }
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); } }
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; }
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
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); }
// 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); } }