public bool Contabilizza(MovimentiBancariDTO movimento)
        {
            var result = false;

            if (movimento.CodiceCondominio != null)
            {
                // ==========================================================================
                //  Maschera scelta causale - Se non si tratta di un movimento di storno
                // ==========================================================================
                var causaleBancaria = getMovimentoBancarioService().GetCausaleACBIByCodice(movimento.Causale);
                if (causaleBancaria != null && causaleBancaria.Codice != "68")
                {
                    // =================================================================================================
                    //  Scelta maschera di registrazione contabile
                    // =================================================================================================
                    // ---------------------------------------------------------------------------------------
                    // Controllo se è prevista una causale contabile legata alla causale bancaria selezionata
                    // ---------------------------------------------------------------------------------------
                    CausaleContabileDTO causaleContabile = null;
                    if (causaleBancaria.IdCausaleContabile != null)
                        causaleContabile = getTabelleContabiliService().GetCausaleById(causaleBancaria.IdCausaleContabile.Value);

                    EsercizioDTO esercizioAttuale = null;
                    CondominioDTO condominioAttuale = null;
                    if (movimento.CodiceCondominio != null)
                    {
                        condominioAttuale = getCondominioService().GetById(movimento.CodiceCondominio.Value, true);
                        var eserciziAperti = getEsercizioService().GetApertiByCondominio(movimento.CodiceCondominio.GetValueOrDefault());
                        if (eserciziAperti.Count == 1)
                            esercizioAttuale = eserciziAperti.SingleOrDefault();
                    }

                    var codiceCausaleContabile = string.Empty;
                    if (causaleContabile != null)
                        codiceCausaleContabile = causaleContabile.Codice;
                    else
                    {
                        if (movimento.CodiceSoggetto > 0)
                            codiceCausaleContabile = "RR";
                    }

                    // ---------------------------------------------------------------------------------------
                    // Se non ho tutte le informazioni chiedo all'utente causale e esercizio
                    // ---------------------------------------------------------------------------------------
                    if (esercizioAttuale == null || string.IsNullOrEmpty(codiceCausaleContabile))
                    {
                        var form = new SceltaCausale(movimento.CodiceCondominio.Value);
                        form.SetCausale(codiceCausaleContabile);

                        if (causaleBancaria.IdCausaleContabile != null)
                            form.SetCausale(causaleBancaria.IdCausaleContabile.Value);

                        if (form.ShowDialog() == DialogResult.OK)
                        {
                            condominioAttuale = form.Condominio;
                            esercizioAttuale = form.Esercizio;
                            causaleContabile = form.CausaleContabile;
                            codiceCausaleContabile = causaleContabile.Codice;
                            form.Dispose();
                        }
                        else
                        {
                            form.Dispose();
                            return false;
                        }
                    }

                    // ---------------------------------------------------------------------------------------
                    // Leggo contato patrimoniale Bancario
                    // ---------------------------------------------------------------------------------------
                    var contoPatrimoniale = getPianoContiService().GetBancarioByEsercizio(esercizioAttuale);
                    if (contoPatrimoniale != null)
                    {
                        Form formMovimento;

                        // ===============================================================================================
                        //  TODO: Introdurre driver per decidere che tipo di registrazione contabile deve essere eseguita
                        // -----------------------------------------------------------------------------------------------
                        //  Legato alla nuova modifica per autorizzazione delle registrazioni e nuova maschera di
                        //  registrazione fatture
                        // ===============================================================================================

                        // Versamento condomini
                        // ----------------------
                        if (codiceCausaleContabile == "RR")
                        {
                            var versamentiForm = ResolveComponent<IVersamentiSoggettiUI>();
                            formMovimento = versamentiForm.GetInserimentoVersamentoSoggetto(condominioAttuale, esercizioAttuale, movimento.Importo.GetValueOrDefault(), contoPatrimoniale, movimento.CodiceBanca, movimento.CodiceSoggetto, movimento.ID, movimento.DataContabile.GetValueOrDefault());
                        }
                        else if (codiceCausaleContabile == "SS")
                        {
                            formMovimento = new SceltaOperazioneStorno(movimento);
                        }
                        else

                        // Registrazione generica
                        // ----------------------
                        {
                            var incassoSpesa = Sfera.Enums.TipoMovimentoEnum.Spesa;
                            if (movimento.Segno == "C")
                                incassoSpesa = Sfera.Enums.TipoMovimentoEnum.Accredito;
                            var movimentiForm = ResolveComponent<IMovimentiContabiliUI>();
                            formMovimento = movimentiForm.GetInserimentoMovimentoContabile(causaleContabile, esercizioAttuale, movimento.Importo.GetValueOrDefault() * -1, contoPatrimoniale, movimento.CodiceBanca, movimento.DataContabile, movimento.DescrizioneBreve + " " + movimento.Descrizione, incassoSpesa, movimento.ID);
                        }

                        if (formMovimento.ShowDialog() == DialogResult.OK)
                            result = true;

                        formMovimento.Dispose();
                    }
                    else
                        CommonMessages.DisplayWarning("La Contabilizzazione non è ammessa." + Environment.NewLine + "Non è stato trovato il conto Banca");
                }

                // ==========================================================================
                //  Movimento di storno
                // ==========================================================================
                else
                {
                    var form = new SceltaOperazioneStorno(movimento);
                    if (form.ShowDialog() == DialogResult.OK)
                        result = true;

                    form.Dispose();
                }
            }

            return result;
        }
Esempio n. 2
0
        private void listaMovimentiClickCellButton(object sender, CellEventArgs e)
        {
            var movimento = (MovimentiBancariDTO)e.Cell.Row.ListObject;
            if (movimento.CodiceCondominio != null)
            {
                var form = new SceltaCausale(movimento.CodiceCondominio.Value);
                if (form.ShowDialog() == DialogResult.OK)
                {
                    var incassoSpesa = Sfera.Enums.TipoMovimentoEnum.Spesa;
                    if (movimento.Segno == "C")
                        incassoSpesa = Sfera.Enums.TipoMovimentoEnum.Accredito;
                    var movimentiForm = ResolveComponent<IMovimentiContabiliUI>();
                    var formMovimento = movimentiForm.GetInserimentoMovimentoContabile(form.CausaleContabile, form.Esercizio, movimento.Importo.GetValueOrDefault(), getPianoContiService().GetBancarioByEsercizio(form.Esercizio), null, movimento.DataContabile, movimento.Descrizione, incassoSpesa, movimento.ID);
                    if (formMovimento.ShowDialog() == DialogResult.OK)
                    {
                        var newMovimento = getMovimentoBancarioService().ContabilizzaSingolo(movimento, movimentiForm.GetIdMovimentoPatrimoniale());
                        ((List<MovimentiBancariDTO>)movimentiBancariDTOBindingSource1.DataSource).Remove(movimento);
                        //((BindingList<MovimentiBancariDTO>)movimentiBancariDtoBindingSource.DataSource).Add(newMovimento);
                    }

                    formMovimento.Dispose();
                }

                form.Dispose();
            }
        }