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; }
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(); } }