public bool guardarDB(fa_notaCreDeb_Info info) { try { #region Variables int Secuencia = 1; ct_cbtecble_Data odata_ct = new ct_cbtecble_Data(); cxc_cobro_Data odata_cobr = new cxc_cobro_Data(); #endregion using (Entities_facturacion db_f = new Entities_facturacion()) { #region Nota de debito credito #region Cabecera fa_notaCreDeb Entity = new fa_notaCreDeb //db_f.fa_notaCreDeb.Add(new fa_notaCreDeb { IdEmpresa = info.IdEmpresa, IdSucursal = info.IdSucursal, IdBodega = info.IdBodega, IdNota = info.IdNota = get_id(info.IdEmpresa, info.IdSucursal, info.IdBodega), IdPuntoVta = info.IdPuntoVta, CodNota = info.CodNota, CreDeb = info.CreDeb.Trim(), CodDocumentoTipo = info.CodDocumentoTipo, Serie1 = info.Serie1, Serie2 = info.Serie2, NumNota_Impresa = info.NumNota_Impresa, NumAutorizacion = info.NumAutorizacion, Fecha_Autorizacion = info.Fecha_Autorizacion, IdCliente = info.IdCliente, no_fecha = info.no_fecha.Date, no_fecha_venc = info.no_fecha_venc.Date, IdTipoNota = info.IdTipoNota, sc_observacion = info.sc_observacion, Estado = info.Estado = "A", NaturalezaNota = info.NaturalezaNota, IdCtaCble_TipoNota = info.IdCtaCble_TipoNota, IdUsuario = info.IdUsuario }; #endregion #region Detalle foreach (var item in info.lst_det) { db_f.fa_notaCreDeb_det.Add(new fa_notaCreDeb_det { IdEmpresa = info.IdEmpresa, IdSucursal = info.IdSucursal, IdBodega = info.IdBodega, IdNota = info.IdNota, Secuencia = Secuencia++, IdProducto = item.IdProducto, sc_cantidad = item.sc_cantidad, sc_cantidad_factura = item.sc_cantidad_factura, sc_Precio = item.sc_Precio, sc_descUni = item.sc_descUni, sc_PordescUni = item.sc_PordescUni, sc_precioFinal = item.sc_precioFinal, vt_por_iva = item.vt_por_iva, sc_iva = item.sc_iva, IdCod_Impuesto_Iva = item.IdCod_Impuesto_Iva, sc_subtotal = item.sc_subtotal, sc_total = item.sc_total, IdCentroCosto = item.IdCentroCosto, IdPunto_Cargo = item.IdPunto_Cargo, IdPunto_cargo_grupo = item.IdPunto_cargo_grupo }); } #endregion #region Cruce Secuencia = 1; foreach (var item in info.lst_cruce) { db_f.fa_notaCreDeb_x_fa_factura_NotaDeb.Add(new fa_notaCreDeb_x_fa_factura_NotaDeb { IdEmpresa_nt = info.IdEmpresa, IdSucursal_nt = info.IdSucursal, IdBodega_nt = info.IdBodega, IdNota_nt = info.IdNota, secuencia = Secuencia++, IdEmpresa_fac_nd_doc_mod = item.IdEmpresa_fac_nd_doc_mod, IdSucursal_fac_nd_doc_mod = item.IdSucursal_fac_nd_doc_mod, IdBodega_fac_nd_doc_mod = item.IdBodega_fac_nd_doc_mod, IdCbteVta_fac_nd_doc_mod = item.IdCbteVta_fac_nd_doc_mod, vt_tipoDoc = item.vt_tipoDoc, Valor_Aplicado = item.Valor_Aplicado, fecha_cruce = DateTime.Now, }); } #endregion #region Talonario fa_PuntoVta_Data data_puntovta = new fa_PuntoVta_Data(); tb_sis_Documento_Tipo_Talonario_Data data_talonario = new tb_sis_Documento_Tipo_Talonario_Data(); fa_PuntoVta_Info info_puntovta = new fa_PuntoVta_Info(); tb_sis_Documento_Tipo_Talonario_Info ultimo_talonario = new tb_sis_Documento_Tipo_Talonario_Info(); tb_sis_Documento_Tipo_Talonario_Info info_talonario = new tb_sis_Documento_Tipo_Talonario_Info(); info_puntovta = data_puntovta.get_info(info.IdEmpresa, info.IdSucursal, info.IdPuntoVta); if (info_puntovta != null && info.NaturalezaNota == "SRI") { if (info_puntovta.EsElectronico == true) { ultimo_talonario = data_talonario.GetUltimoNoUsado(info.IdEmpresa, info_puntovta.codDocumentoTipo, info_puntovta.Su_CodigoEstablecimiento, info_puntovta.cod_PuntoVta, info_puntovta.EsElectronico, true); if (ultimo_talonario != null) { Entity.Serie1 = info.Serie1 = ultimo_talonario.Establecimiento; Entity.Serie2 = info.Serie2 = ultimo_talonario.PuntoEmision; Entity.NumNota_Impresa = info.NumNota_Impresa = ultimo_talonario.NumDocumento; } } else { info_talonario.IdEmpresa = info.IdEmpresa; info_talonario.CodDocumentoTipo = info.CodDocumentoTipo; info_talonario.Establecimiento = info.Serie1; info_talonario.PuntoEmision = info.Serie2; info_talonario.NumDocumento = info.NumNota_Impresa; info_talonario.IdSucursal = info.IdSucursal; info_talonario.Usado = true; data_talonario.modificar_estado_usadoDB(info_talonario); } } else { Entity.Serie1 = null; Entity.Serie2 = null; Entity.NumNota_Impresa = null; } #endregion db_f.fa_notaCreDeb.Add(Entity); db_f.SaveChanges(); #endregion #region Parametros var parametros = db_f.fa_parametro.Where(q => q.IdEmpresa == info.IdEmpresa).FirstOrDefault(); var cliente = db_f.fa_cliente.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdCliente == info.IdCliente).FirstOrDefault(); #endregion #region Contabilidad if (parametros != null) { ct_cbtecble_Info diario = armar_diario(info, info.CreDeb.Trim() == "C" ? (int)parametros.IdTipoCbteCble_NC : (int)parametros.IdTipoCbteCble_ND, cliente.IdCtaCble_cxc_Credito, info.IdCtaCble_TipoNota); if (diario != null) { if (odata_ct.guardarDB(diario)) { db_f.fa_notaCreDeb_x_ct_cbtecble.Add(new fa_notaCreDeb_x_ct_cbtecble { no_IdEmpresa = info.IdEmpresa, no_IdSucursal = info.IdSucursal, no_IdBodega = info.IdBodega, no_IdNota = info.IdNota, ct_IdEmpresa = diario.IdEmpresa, ct_IdTipoCbte = diario.IdTipoCbte, ct_IdCbteCble = diario.IdCbteCble, observacion = info.CodDocumentoTipo + (info.NaturalezaNota == "SRI" ? ("-" + info.Serie1 + "-" + info.Serie2 + "-" + info.NumNota_Impresa) : info.IdNota.ToString("000000000")) }); db_f.SaveChanges(); } } } #endregion #region Cobranza if (info.CreDeb.Trim() == "C" && info.lst_cruce.Count != 0) { cxc_cobro_Info cobro = armar_cobro(info); if (cobro != null) { if (odata_cobr.guardarDB(cobro)) { db_f.fa_notaCreDeb_x_cxc_cobro.Add(new fa_notaCreDeb_x_cxc_cobro { IdEmpresa_nt = info.IdEmpresa, IdSucursal_nt = info.IdSucursal, IdBodega_nt = info.IdBodega, IdNota_nt = info.IdNota, IdEmpresa_cbr = cobro.IdEmpresa, IdSucursal_cbr = cobro.IdSucursal, IdCobro_cbr = cobro.IdCobro, Valor_cobro = Math.Round(info.lst_cruce.Sum(q => q.Valor_Aplicado), 2, MidpointRounding.AwayFromZero) }); db_f.SaveChanges(); } } } #endregion } return(true); } catch (Exception ex) { tb_LogError_Data LogData = new tb_LogError_Data(); LogData.GuardarDB(new tb_LogError_Info { Descripcion = ex.Message, InnerException = ex.InnerException == null ? null : ex.InnerException.Message, Clase = "fa_notaCreDeb_Data", Metodo = "guardarDB", IdUsuario = info.IdUsuario }); return(false); } }