Пример #1
0
        private void setImporto(string keyTributo, decimal importo, int progressivoTributo, DatiModelloF24 dati)
        {
            var tributo = keyTributo.Split('¥');

            switch (progressivoTributo)
            {
                case 1:
                    dati.ImportoADebito01 = importo.ToString("#0.00");
                    dati.CodiceTributo01 = tributo[0];
                    dati.PeriodoRiferimento01 = tributo[1].Substring(4, 2).PadLeft(4, '0');
                    dati.AnnoRiferimento01 = tributo[1].Substring(0, 4);
                    break;

                case 2:
                    dati.ImportoADebito02 = importo.ToString("#0.00");
                    dati.CodiceTributo02 = tributo[0];
                    dati.PeriodoRiferimento02 = tributo[1].Substring(4, 2).PadLeft(4, '0');
                    dati.AnnoRiferimento02 = tributo[1].Substring(0, 4);
                    break;

                case 3:
                    dati.ImportoADebito03 = importo.ToString("#0.00");
                    dati.CodiceTributo03 = tributo[0];
                    dati.PeriodoRiferimento03 = tributo[1].Substring(4, 2).PadLeft(4, '0');
                    dati.AnnoRiferimento03 = tributo[1].Substring(0, 4);
                    break;

                case 4:
                    dati.ImportoADebito04 = importo.ToString("#0.00");
                    dati.CodiceTributo04 = tributo[0];
                    dati.PeriodoRiferimento04 = tributo[1].Substring(4, 2).PadLeft(4, '0');
                    dati.AnnoRiferimento04 = tributo[1].Substring(0, 4);
                    break;

                case 5:
                    dati.ImportoADebito05 = importo.ToString("#0.00");
                    dati.CodiceTributo05 = tributo[0];
                    dati.PeriodoRiferimento05 = tributo[1].Substring(4, 2).PadLeft(4, '0');
                    dati.AnnoRiferimento05 = tributo[1].Substring(0, 4);
                    break;

                case 6:
                    dati.ImportoADebito06 = importo.ToString("#0.00");
                    dati.CodiceTributo06 = tributo[0];
                    dati.PeriodoRiferimento06 = tributo[1].Substring(4, 2).PadLeft(4, '0');
                    dati.AnnoRiferimento06 = tributo[1].Substring(0, 4);
                    break;

            }            
        }
Пример #2
0
        public byte[] EsecuzionePagamenti(PagamentoRitenuta ritenuta, bool testataPerCondominio, bool mittenteCondominio, DateTime dataVersamento)
        {
            _testata = ritenuta;
            byte[] bytes = null;

            try
            {
                // =============================================================================================
                // Compilo il modulo PDF
                // =============================================================================================
                var modulo = RitenutaModuloPDFResources.ResourceManager.GetObject("F24_" + dataVersamento.Year);
                if (modulo != null)
                {
                    var listaPagamenti = ordinaDisposizioni(new List<Pagamento>(_testata.Pagamenti));

                    // Per ogni condominio creo un modulo
                    var moduliCondomini = new List<byte[]>();
                    foreach (var condominio in listaPagamenti.Keys)
                    {
                        var iban = condominio.DatiBancariPrincipale.Iban;
                        if (!string.IsNullOrEmpty(iban) && iban.StartsWith("IT"))
                            iban = iban.Substring(2);

                        // Intestazione
                        var datiF24 = new DatiModelloF24
                        {
                            CodiceFiscaleCondominio = condominio.CodiceFiscale,
                            ComuneCondominio = condominio.Indirizzo.Comune.Descrizione,
                            IbanCondominio = iban,
                            IndirizzoCondominio = condominio.Indirizzo.Indirizzo + condominio.Indirizzo.Civico,
                            ProvinciaCondominio = condominio.Indirizzo.Comune.ProvinciaAppartenenza.Codice,
                            DataVersamento = dataVersamento.ToShortDateString()
                        };

                        if (dataVersamento.Year == 2014)
                            datiF24.IbanCondominio = datiF24.IbanCondominio.Substring(2);

                        var nomeCondominio = condominio.Descrizione;
                        if (nomeCondominio.Length > 70)
                        {
                            datiF24.NomeCondominio = nomeCondominio.Substring(0, 70);
                            datiF24.NomeCondominio2 = nomeCondominio.Substring(71);
                        }
                        else
                            datiF24.NomeCondominio = nomeCondominio;

                        // Dati Banca
                        var banca = _daoFactory.GetAbiCabDao().GetByAbiCab(condominio.DatiBancariPrincipale.Abi, condominio.DatiBancariPrincipale.Cab);
                        datiF24.NomeBancaDelega = banca.DescrizioneAbi;
                        datiF24.NomeAgenziaDelega = banca.DescrizioneCab;
                        datiF24.ProvinciaAgenziaDelega = banca.Provincia;

                        var progressivoTributo = 0;
                        var totaleDebito = 0m;
                        var totaleCredito = 0m;
                        foreach (var kvp in listaPagamenti[condominio])
                        {
                            progressivoTributo++;
                            decimal? importoADebito = (from pag in kvp.Value
                                                       where pag.RitenutaAcconto.Importo != null && pag.RitenutaAcconto.Importo > 0
                                                       select pag).Sum(pag => Math.Round(pag.RitenutaAcconto.ImportoConInteressi, 2));
                            setImporto(kvp.Key, importoADebito.GetValueOrDefault(), progressivoTributo, datiF24);

                            // Eventuali sanzioni
                            var importoSanzione = kvp.Value.Sum(pag => Math.Round(pag.RitenutaAcconto.ImportoSanzione.GetValueOrDefault(), 2));
                            if (importoSanzione > 0)
                            {
                                progressivoTributo++;
                                setImporto("8906¥" + kvp.Key.Split('¥')[1], importoSanzione, progressivoTributo, datiF24);
                            }

                            totaleDebito += importoADebito.GetValueOrDefault() + importoSanzione;
                        }

                        datiF24.TotaleImportoADebito = totaleDebito.ToString("#0.00");
                        datiF24.TotaleImporto = datiF24.TotaleImportoADebito;

                        var xmlMappingFile = RitenutaModuloPDFResources.ResourceManager.GetObject(string.Format("F24_FieldMapping_{0}", dataVersamento.Year));
                        if (xmlMappingFile == null)
                            xmlMappingFile = RitenutaModuloPDFResources.ResourceManager.GetObject("F24_FieldMapping");

                        moduliCondomini.Add(FillForm.FillStream(datiF24, (byte[])modulo, Library.Conversione.ToString(xmlMappingFile), false, true));
                    }

                    // Merge di tutte le pagine
                    if (moduliCondomini.Count > 0)
                    {
                        try
                        {
                            var pdfmerge = new PdfMerge();
                            bytes = pdfmerge.Merge(moduliCondomini, true);
                        }
                        catch (Exception ex)
                        {
                            _log.ErrorFormat("Errore nel merge dei moduli - {0} - ritenuta:{1} - azienda:{2}", ex, Library.Utility.GetMethodDescription(), ritenuta.ID, ritenuta.AziendaID);                            
                            throw;
                        }
                    }
                }


                return bytes;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la creazione del file CBI delle ritenute - F24. - {0} - ritenuta:{1}", ex, Library.Utility.GetMethodDescription(), ritenuta.ID);
                _notifier.Notify("Si sono verificati problemi inaspettati durante la creazione del file CBI delle ritenute - F24." + Environment.NewLine + "Controllare il log per ulteriori dettagli.");
                return bytes;
            }

        }