public fa_factura_det_Info existe_factura_det(int IdEmpresa, int IdSucursal, decimal IdProforma, int Secuencia_pf) { try { fa_factura_det_Info info = new fa_factura_det_Info(); using (SqlConnection connection = new SqlConnection(ConexionesERP.GetConnectionString())) { connection.Open(); #region Query string query = "select * from fa_factura_det d where d.IdEmpresa_pf = " + IdEmpresa + " and d.IdSucursal_pf= " + IdSucursal + " and d.IdProforma = " + IdProforma + " and d.Secuencia_pf = " + Secuencia_pf; #endregion SqlCommand command = new SqlCommand(query, connection); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { info = new fa_factura_det_Info { IdEmpresa = Convert.ToInt32(reader["IdEmpresa"]), IdSucursal = Convert.ToInt32(reader["IdSucursal"]), IdProforma = Convert.ToDecimal(reader["IdProforma"]), Secuencia = Convert.ToInt32(reader["Secuencia"]), IdProducto = Convert.ToInt32(reader["IdProducto"]), vt_cantidad = Convert.ToDouble(reader["vt_cantidad"]), vt_Precio = Convert.ToDouble(reader["vt_Precio"]), vt_Subtotal = Convert.ToDouble(reader["vt_Subtotal"]), vt_iva = Convert.ToDouble(reader["vt_iva"]), vt_PorDescUnitario = Convert.ToDouble(reader["vt_PorDescUnitario"]), vt_por_iva = Convert.ToDouble(reader["vt_por_iva"]), vt_total = Convert.ToDouble(reader["vt_total"]), IdCod_Impuesto_Iva = reader["IdCod_Impuesto_Iva"].ToString(), IdEmpresa_pf = string.IsNullOrEmpty(reader["IdEmpresa_pf"].ToString()) ? (int?)null : Convert.ToInt32(reader["IdEmpresa_pf"]), IdSucursal_pf = string.IsNullOrEmpty(reader["IdSucursal_pf"].ToString()) ? (int?)null : Convert.ToInt32(reader["IdSucursal_pf"]), Secuencia_pf = string.IsNullOrEmpty(reader["Secuencia_pf"].ToString()) ? (int?)null : Convert.ToInt32(reader["Secuencia_pf"]) }; } reader.Close(); } return(info); } catch (Exception ex) { throw; } }
public bool modificarDB(fa_guia_remision_Info info) { try { fa_TerminoPago_Info termino_pago = new fa_TerminoPago_Info(); fa_PuntoVta_Info punto_venta = new fa_PuntoVta_Info(); termino_pago = data_tpago.get_info(info.vt_tipo_venta); punto_venta = data_puntovta.get_info(info.IdEmpresa, info.IdSucursal, info.IdPuntoVta_Fact); int secuencia = 1; using (Entities_facturacion Context = new Entities_facturacion()) { fa_guia_remision Entity = Context.fa_guia_remision.FirstOrDefault(q => q.IdGuiaRemision == info.IdGuiaRemision); if (Entity == null) { return(false); } Entity.CodGuiaRemision = info.CodGuiaRemision; Entity.CodDocumentoTipo = info.CodDocumentoTipo; Entity.NUAutorizacion = info.NUAutorizacion; Entity.Fecha_Autorizacion = info.Fecha_Autorizacion; Entity.IdCliente = info.IdCliente; Entity.IdTransportista = info.IdTransportista; Entity.gi_fecha = info.gi_fecha.Date; Entity.gi_plazo = info.gi_plazo; Entity.gi_fech_venc = info.gi_fech_venc; Entity.gi_FechaInicioTraslado = info.gi_FechaInicioTraslado.Date; Entity.gi_FechaFinTraslado = info.gi_FechaFinTraslado.Date; Entity.placa = info.placa; Entity.Direccion_Destino = info.Direccion_Destino; Entity.Direccion_Origen = info.Direccion_Origen; Entity.IdMotivoTraslado = info.IdMotivoTraslado; Entity.FechaModificacion = info.FechaModificacion = DateTime.Now; Entity.IdUsuarioModificacion = info.IdUsuarioModificacion; Entity.gi_Observacion = info.gi_Observacion; Entity.IdCbteVta = info.IdCbteVta; Entity.IdContacto = (info.IdContacto == 0 ? null : info.IdContacto); foreach (var item in info.lst_detalle) { Context.fa_guia_remision_det.Add(new fa_guia_remision_det { IdEmpresa = info.IdEmpresa, IdSucursal = info.IdSucursal, IdBodega = info.IdBodega, IdGuiaRemision = info.IdGuiaRemision, Secuencia = secuencia, IdProducto = item.IdProducto, gi_cantidad = item.gi_cantidad, gi_detallexItems = item.gi_detallexItems, gi_precio = item.gi_precio, gi_por_desc = item.gi_por_desc, gi_descuentoUni = item.gi_descuentoUni, gi_PrecioFinal = item.gi_PrecioFinal, gi_Subtotal = item.gi_Subtotal, IdCod_Impuesto = item.IdCod_Impuesto, gi_por_iva = item.gi_por_iva, gi_Iva = item.gi_Iva, gi_Total = item.gi_Total, IdCentroCosto = item.IdCentroCosto, IdEmpresa_pf = item.IdEmpresa_pf, IdSucursal_pf = item.IdSucursal_pf, IdProforma = item.IdProforma, Secuencia_pf = item.Secuencia_pf }); if (item.IdCbteVta != null && item.IdCbteVta != 0) { Context.fa_guia_remision_det_x_factura.Add(new fa_guia_remision_det_x_factura { IdEmpresa_fact = info.IdEmpresa, IdSucursal_fact = info.IdSucursal, IdBodega_fact = info.IdBodega, IdCbteVta_fact = Convert.ToDecimal(item.IdCbteVta), IdGuiaRemision_guia = info.IdGuiaRemision, Secuencia_fact = Convert.ToInt32(item.Secuencia_fact), Secuencia_guia = secuencia, IdBodega_guia = info.IdBodega, IdSucursal_guia = info.IdSucursal, IdEmpresa_guia = info.IdEmpresa }); } secuencia++; } foreach (var item in info.lst_detalle_x_factura) { if (item.IdCbteVta != 0) { Context.fa_factura_x_fa_guia_remision.Add(new fa_factura_x_fa_guia_remision { fa_IdEmpresa = info.IdEmpresa, fa_IdSucursal = info.IdSucursal, fa_IdBodega = info.IdBodega, fa_IdCbteVta = item.IdCbteVta, gi_IdEmpresa = info.IdEmpresa, gi_IdSucursal = info.IdSucursal, gi_IdBodega = info.IdBodega, gi_IdGuiaRemision = info.IdGuiaRemision }); } } #region Factura if (info.GenerarFactura == true && (info.IdCbteVta == null || info.IdCbteVta == 0)) { fa_factura_Info info_fact = new fa_factura_Info(); info_fact.lst_det = new List <fa_factura_det_Info>(); info_fact.lst_cuota = new List <fa_cuotas_x_doc_Info>(); int secuencia_fact = 1; if (termino_pago != null && termino_pago.IdTerminoPago != "") { info.vt_fech_venc = info.gi_fecha.AddDays(termino_pago.Dias_Vct); } if (punto_venta != null && punto_venta.IdPuntoVta != 0) { info.IdCaja = punto_venta.IdCaja; } info_fact.IdEmpresa = info_fact.IdEmpresa = info.IdEmpresa; info_fact.IdSucursal = info_fact.IdSucursal = info.IdSucursal; info_fact.IdBodega = info_fact.IdBodega = info.IdBodega; info_fact.vt_tipoDoc = cl_enumeradores.eTipoDocumento.FACT.ToString(); info_fact.vt_serie1 = info.vt_serie1; info_fact.vt_serie2 = info.vt_serie2; info_fact.vt_NumFactura = info.vt_NumFactura; info_fact.Fecha_Autorizacion = DateTime.Now; info_fact.vt_autorizacion = null; info_fact.vt_fecha = info.gi_fecha.Date; info_fact.vt_fech_venc = info.vt_fech_venc; /*depende de la termino de pago*/ info_fact.IdCliente = info.IdCliente; info_fact.IdContacto = info.IdContacto; info_fact.IdVendedor = info.IdVendedor; info_fact.vt_plazo = termino_pago.Dias_Vct; /**depende de la termino de pago*/ info_fact.vt_Observacion = string.IsNullOrEmpty(info.ObservacionFactura) ? "" : info.ObservacionFactura; info_fact.IdCatalogo_FormaPago = info.IdCatalogo_FormaPago; info_fact.vt_tipo_venta = info.vt_tipo_venta; info_fact.IdCaja = info.IdCaja; /*depende del punto de venta*/ info_fact.IdPuntoVta = info.IdPuntoVta_Fact; info_fact.fecha_primera_cuota = null; info_fact.Fecha_Transaccion = DateTime.Now; info_fact.Estado = info.Estado == true ? "A" : "I"; info_fact.esta_impresa = null; info_fact.valor_abono = null; info_fact.IdUsuario = info.IdUsuarioCreacion; info_fact.IdNivel = 1; info_fact.CodCbteVta = info.CodGuiaRemision; foreach (var item in info.lst_detalle) { fa_factura_det_Info info_fact_detalle = new fa_factura_det_Info { IdEmpresa = info_fact.IdEmpresa, IdSucursal = info_fact.IdSucursal, IdBodega = info_fact.IdBodega, Secuencia = secuencia_fact++, IdProducto = item.IdProducto, vt_cantidad = item.gi_cantidad, vt_Precio = item.gi_precio, vt_PorDescUnitario = item.gi_por_desc, vt_DescUnitario = item.gi_descuentoUni, vt_PrecioFinal = item.gi_PrecioFinal, vt_Subtotal = item.gi_Subtotal, vt_por_iva = item.gi_por_iva, IdCod_Impuesto_Iva = item.IdCod_Impuesto, vt_iva = item.gi_Iva, vt_total = item.gi_Total, vt_detallexItems = item.gi_detallexItems, IdEmpresa_pf = item.IdEmpresa_pf, IdSucursal_pf = item.IdSucursal_pf, IdProforma = item.IdProforma, Secuencia_pf = item.Secuencia_pf, IdCentroCosto = item.IdCentroCosto, IdPunto_Cargo = item.IdPunto_cargo, IdPunto_cargo_grupo = item.IdPunto_cargo_grupo, }; info_fact.lst_det.Add(info_fact_detalle); } var SubtotalConDscto = (decimal)Math.Round(info.lst_detalle.Sum(q => q.gi_Subtotal), 2, MidpointRounding.AwayFromZero); var SubtotalIVASinDscto = (decimal)Math.Round(info_fact.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero); var SubtotalSinIVASinDscto = (decimal)Math.Round(info_fact.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero); var Descuento = (decimal)Math.Round(info_fact.lst_det.Sum(q => q.vt_DescUnitario * q.vt_cantidad), 2, MidpointRounding.AwayFromZero); var SubtotalIVAConDscto = (decimal)Math.Round(info_fact.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero); var SubtotalSinIVAConDscto = (decimal)Math.Round(info_fact.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero); var ValorIVA = (decimal)Math.Round(info_fact.lst_det.Sum(q => q.vt_iva), 2, MidpointRounding.AwayFromZero); var SubtotalSinDscto = SubtotalIVASinDscto + SubtotalSinIVASinDscto; var Total = SubtotalConDscto + ValorIVA; info_fact.info_resumen = new fa_factura_resumen_Info { IdEmpresa = info_fact.IdEmpresa, IdSucursal = info_fact.IdSucursal, IdBodega = info_fact.IdBodega, // IdCbteVta = info_fact.IdCbteVta, SubtotalConDscto = SubtotalConDscto, SubtotalIVAConDscto = SubtotalIVAConDscto, SubtotalIVASinDscto = SubtotalIVASinDscto, SubtotalSinDscto = SubtotalSinDscto, SubtotalSinIVAConDscto = SubtotalSinIVAConDscto, SubtotalSinIVASinDscto = SubtotalSinIVASinDscto, Total = Total, Descuento = Descuento, ValorEfectivo = 0, ValorIVA = ValorIVA, Cambio = Total, }; data_fact.guardarDB(info_fact); Entity.IdCbteVta = info_fact.IdCbteVta; #region Relacion Guia Context.fa_factura_x_fa_guia_remision.Add(new fa_factura_x_fa_guia_remision { fa_IdEmpresa = info.IdEmpresa, fa_IdSucursal = info.IdSucursal, fa_IdBodega = info.IdBodega, fa_IdCbteVta = info_fact.IdCbteVta, gi_IdEmpresa = info.IdEmpresa, gi_IdSucursal = info.IdSucursal, gi_IdBodega = info.IdBodega, gi_IdGuiaRemision = info.IdGuiaRemision }); secuencia = 1; foreach (var item in info.lst_detalle) { Context.fa_guia_remision_det_x_factura.Add(new fa_guia_remision_det_x_factura { IdEmpresa_fact = info.IdEmpresa, IdSucursal_fact = info.IdSucursal, IdBodega_fact = info.IdBodega, IdCbteVta_fact = info_fact.IdCbteVta, Secuencia_fact = secuencia, IdEmpresa_guia = info.IdEmpresa, IdSucursal_guia = info.IdSucursal, IdBodega_guia = info.IdBodega, IdGuiaRemision_guia = info.IdGuiaRemision, Secuencia_guia = secuencia++, }); } #endregion } #endregion Context.SaveChanges(); } 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_guia_remision_Data", Metodo = "modificarDB", IdUsuario = info.IdUsuarioCreacion }); return(false); } }
public JsonResult AgregarPedido(string SecuencialID = "", decimal IdTransaccionSession = 0) { int IdEmpresa = Convert.ToInt32(SecuencialID.Substring(0, 4)); int IdProducto = Convert.ToInt32(SecuencialID.Substring(4, 6)); var producto = bus_producto.get_info(IdEmpresa, IdProducto); double subtotal = 0; double iva_porc = 0; double iva = 0; double total = 0; double Subtotal_Detalle = 0; double Iva_Detalle = 0; double Total_Detalle = 0; var impuesto = bus_impuesto.get_info(producto.IdCod_Impuesto_Iva); if (impuesto != null) { iva_porc = impuesto.porcentaje; } subtotal = 1 * producto.precio_1; iva = Math.Round((subtotal * (iva_porc / 100)), 2); total = Math.Round((subtotal + iva), 2); var lst_actual = List_det.get_list(IdTransaccionSession); var info_det = new fa_factura_det_Info { IdEmpresa = IdEmpresa, Secuencia = lst_actual.Count + 1, IdProducto = producto.IdProducto, pr_descripcion = producto.pr_descripcion, vt_cantidad = 1, vt_PorDescUnitario = 0, vt_Precio = producto.precio_1, vt_DescUnitario = 0, vt_PrecioFinal = producto.precio_1 - 0, vt_Subtotal = subtotal, tp_manejaInven = producto.tp_ManejaInven, se_distribuye = producto.se_distribuye, vt_detallexItems = "", IdCod_Impuesto_Iva = producto.IdCod_Impuesto_Iva, //vt_Subtotal_item = 0, //vt_iva_item=0, //vt_total_item=0, vt_iva = iva, vt_total = total, vt_por_iva = iva_porc }; var existe_producto = lst_actual.Where(q => q.IdEmpresa == IdEmpresa && q.IdProducto == IdProducto).FirstOrDefault(); if (existe_producto == null) { lst_actual.Add(info_det); } else { var cantidad = existe_producto.vt_cantidad + 1; subtotal = cantidad * producto.precio_1; iva = Math.Round((subtotal * (iva_porc / 100)), 2); total = Math.Round((subtotal + iva), 2); //lst_actual.ForEach(q=> q.vt_cantidad = (q.Secuencia== existe_producto.Secuencia ? cantidad : q.vt_cantidad)); lst_actual.Where(q => q.Secuencia == existe_producto.Secuencia).ToList().ForEach(q => { q.vt_cantidad = cantidad; q.vt_iva = iva; q.vt_Subtotal = subtotal; q.vt_total = total; }); } List_det.set_list(lst_actual, IdTransaccionSession); Subtotal_Detalle = (double)Math.Round(lst_actual.Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero); Iva_Detalle = (double)Math.Round(lst_actual.Sum(q => q.vt_iva), 2, MidpointRounding.AwayFromZero); Total_Detalle = (double)Math.Round(lst_actual.Sum(q => q.vt_total), 2, MidpointRounding.AwayFromZero); var NombreProducto = producto.pr_descripcion; return(Json(new { Producto = NombreProducto, subtotal = Subtotal_Detalle.ToString("C2"), iva = Iva_Detalle.ToString("C2"), total = Total_Detalle.ToString("C2") }, JsonRequestBehavior.AllowGet)); }