public OOB.ResultadoAuto Venta_AgregarDocumento(OOB.LibVenta.Venta.Generar.Agregar ficha) { var result = new OOB.ResultadoAuto(); var f = ficha; var fichaDTO = new DtoLibVenta.Venta.Agregar() { AutoCliente = f.AutoCliente, AutoCobrador = f.AutoCobrador, AutoUsuario = f.AutoUsuario, AutoVendedor = f.AutoVendedor, AutoTransporte = f.AutoTransporte, ClienteCiRif = f.ClienteCiRif, ClienteCodigo = f.ClienteCodigo, ClienteDenominacionFiscal = f.ClienteDenominacionFiscal, ClienteDirFiscal = f.ClienteDirFiscal, ClienteNombre = f.ClienteNombre, ClienteTarifa = f.ClienteTarifa, ClienteTelefono = f.ClienteTelefono, CobradorCodigo = f.CobradorCodigo, CobradorNombre = f.CobradorNombre, CodigoSucursal = f.CodigoSucursal, Estacion = f.Estacion, FactorCambio = f.FactorCambio, MontoRecibido = f.MontoRecibido, Renglones = f.Renglones, UsuarioCodigo = f.UsuarioCodigo, UsuarioNombre = f.UsuarioNombre, VendedorCodigo = f.VendedorCodigo, VendedorNombre = f.VendedorNombre, TransporteCodigo = f.TransporteCodigo, TransporteNombre = f.TransporteNombre, CondicionPago = (DtoLibVenta.Venta.Enumerados.enumCondicionPago)f.CondicionPago, DiasCredito = f.DiasCredito, Notas = f.Notas, SerialFiscal = f.SerialFiscal, CambioDar = f.CambioDar, CondicionPagoDescripcion = f.CondicionPagoDescripcion, DocumentoCodigo = f.DocumentoCodigo, DocumentoSituacion = f.DocumentoSituacion, DocumentoTipo = f.DocumentoTipo, DocumentoNombre = f.DocumentoNombre, DocumentoSigno = f.DocumentoSigno, MesRelacion = f.MesRelacion, AnoRelacion = f.AnoRelacion, }; var e = ficha.AgregarEncabezado; var encabezado = new DtoLibVenta.Venta.AgregarEncabezado() { AutoRemision = e.AutoRemision, DepachadoPor = e.DepachadoPor, DireccionDespacho = e.DireccionDespacho, DocumentoRemision = e.DocumentoRemision, FechaPedido = e.FechaPedido, OrdenCompra = e.OrdenCompra, Pedido = e.Pedido, Serie = e.Serie, TipoRemision = e.TipoRemision, }; fichaDTO.AgregarEncabezado = encabezado; var t = ficha.AgregarTotales; var totales = new DtoLibVenta.Venta.AgregarTotal() { VentaNeta = t.VentaNeta, CostoVenta = t.CostoVenta, Utilidad = t.Utilidad, UtilidadPorc = t.UtilidadPorc, SubTotalNeto = t.SubTotalNeto, DescuentoMonto_1 = t.DescuentoMonto_1, DescuentoMonto_2 = t.DescuentoMonto_2, DescuentoPorct_1 = t.DescuentoPorct_1, DescuentoPorct_2 = t.DescuentoPorct_2, CargoMonto = t.CargoMonto, CargoPorct = t.CargoPorct, SubTotal = t.SubTotal, SubTotalImpuesto = t.SubTotalImpuesto, MontoTotal = t.MontoTotal, MontoBase = t.MontoBase, MontoImpuesto = t.MontoImpuesto, MontoExento = t.MontoExento, MontoBase1 = t.MontoBase1, MontoBase2 = t.MontoBase2, MontoBase3 = t.MontoBase3, MontoImp1 = t.MontoImp1, MontoImp2 = t.MontoImp2, MontoImp3 = t.MontoImp3, Tasa1 = t.Tasa1, Tasa2 = t.Tasa2, Tasa3 = t.Tasa3, MontoDivisa = t.MontoDivisa, SaldoPendiente = t.SaldoPendiente, }; fichaDTO.AgregarTotales = totales; var cx = ficha.AgregarCxc; var cxc = new DtoLibVenta.Venta.AgregarCxc() { AutoCliente = cx.AutoCliente, AutoVendedor = cx.AutoVendedor, ClienteCiRif = cx.ClienteCiRif, ClienteCodigo = cx.ClienteCodigo, ClienteNombre = cx.ClienteNombre, DocumentoVentaSerie = cx.DocumentoVentaSerie, DocumentoVentaTipo = cx.DocumentoVentaTipo, IsCancelado = cx.IsCancelado, MontoAcumulado = cx.MontoAcumulado, MontoImporteNeto = cx.MontoImporteNeto, MontoImporteTotal = cx.MontoImporteTotal, MontoResta = cx.MontoResta, Notas = cx.Notas, Signo = cx.Signo, }; fichaDTO.AgregarCxc = cxc; if (ficha.AgregarCuerpo != null && ficha.AgregarCuerpo.Count > 0) { var lc = ficha.AgregarCuerpo.Select(c => { return(new DtoLibVenta.Venta.AgregarCuerpo() { AutoDepartamento = c.AutoDepartamento, AutoGrupo = c.AutoGrupo, AutoProducto = c.AutoProducto, AutoSubGrupo = c.AutoSubGrupo, AutoTasaImpuesto = c.AutoTasaImpuesto, AutoCliente = c.AutoCliente, AutoDeposito = c.AutoDeposito, AutoVendedor = c.AutoVendedor, Cantidad = c.Cantidad, CantidadUnd = c.CantidadUnd, Categoria = c.Categoria, CodigoPrd = c.CodigoPrd, CostoPromedioCompra = c.CostoCompraPromedio, CostoPromedioUnd = c.CostoPromedioUnd, CostoUnd = c.CostoUnd, CostoVenta = c.CostoVenta, Decimales = c.Decimales, DepositoCodigo = c.DepositoCodigo, DepositoDescripcion = c.DepositoDescripcion, DescuentoMonto_1 = c.DescuentoMonto_1, DescuentoMonto_2 = c.DescuentoMonto_2, DescuentoMonto_3 = c.DescuentoMonto_3, DescuentoPorc_1 = c.DescuentoPorc_1, DescuentoPorc_2 = c.DescuentoPorc_2, DescuentoPorc_3 = c.DescuentoPorc_3, DiasGarantia = c.DiasGarantia, Empaque = c.Empaque, EmpaqueContenido = c.EmpaqueContenido, IsGarantia = c.IsGarantia, IsSerial = c.IsSerial, MontoDescuento = c.MontoDescuento, MontoImpuesto = c.MontoImpuesto, MontoTotal = c.MontoTotal, NombrePrd = c.NombrePrd, Notas = c.Notas, PrecioFinal = c.PrecioFinal, PrecioItem = c.PrecioItem, PrecioNeto = c.PrecioNeto, PrecioUnd = c.PrecioUnd, Signo = c.Signo, TarifaPrecio = c.TarifaPrecio, TasaIva = c.TasaIva, Tipo = c.Tipo, TotalItem = c.TotalItem, TotalNeto = c.TotalNeto, UtilidadMonto = c.UtilidadMonto, UtilidadPorc = c.UtilidadPorc, VendedorCodigo = c.VendedorCodigo, }); }).ToList(); fichaDTO.AgregarCuerpo = lc; } if (ficha.AgregarMovKardex != null && ficha.AgregarMovKardex.Count > 0) { var lmk = ficha.AgregarMovKardex.Select(mk => { return(new DtoLibVenta.Venta.AgregarKardex() { AutoConcepto = mk.AutoConcepto, AutoDeposito = mk.AutoDeposito, AutoProducto = mk.AutoProducto, Cantidad = mk.Cantidad, CantidadUnd = mk.CantidadUnd, Codigo = mk.Codigo, CostoPromedioUnd = mk.CostoUndPromedio, Entidad = mk.Entidad, Modulo = mk.Modulo, Notas = mk.Notas, PrecioUnd = mk.PrecioUnd, Siglas = mk.Siglas, Signo = mk.Signo, TotalCostoVenta = mk.TotalCostoVenta, }); }).ToList(); fichaDTO.AgregarKardex = lmk; } if (ficha.AgregarActProductoDeposito != null && ficha.AgregarActProductoDeposito.Count > 0) { var lmd = ficha.AgregarActProductoDeposito.Select(md => { return(new DtoLibVenta.Venta.AgregarActProductoDeposito() { AutoDeposito = md.AutoDeposito, AutoProducto = md.AutoProducto, TotalUnd = md.TotalUnd, }); }).ToList(); fichaDTO.AgregarActProductoDeposito = lmd; } var r01 = MyData.VentaAgregar(fichaDTO); if (r01.Result == DtoLib.Enumerados.EnumResult.isError) { result.Mensaje = r01.Mensaje; result.Result = OOB.Enumerados.EnumResult.isError; return(result); } return(result); }
public DtoLib.ResultadoAuto VentaAgregar(DtoLibVenta.Venta.Agregar ficha) { var result = new DtoLib.ResultadoAuto(); try { using (var ctx = new LibEntityVentas.libVentasEntities(_cnVenta.ConnectionString)) { using (var ts = new TransactionScope()) { var r1 = ctx.Database.ExecuteSqlCommand("update sistema_contadores set a_ventas=a_ventas+1"); if (r1 == 0) { result.Mensaje = "PROBLEMA AL ACTUALIZAR CONTADOR DE VENTAS"; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } var r2 = ctx.Database.ExecuteSqlCommand("update sistema_contadores set a_cxc=a_cxc+1"); if (r2 == 0) { result.Mensaje = "PROBLEMA AL ACTUALIZAR CONTADOR DE CXC "; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } var cntVenta = ctx.Database.SqlQuery <int>("select a_ventas from sistema_contadores").FirstOrDefault(); var cntCxC = ctx.Database.SqlQuery <int>("select a_cxc from sistema_contadores").FirstOrDefault(); var autoVenta = cntVenta.ToString().Trim().PadLeft(10, '0'); var autoCxC = cntCxC.ToString().Trim().PadLeft(10, '0'); var autoCxcPago = ""; var autoCxcRecibo = ""; var autoCxcReciboNumero = ""; if (ficha.CondicionPago == DtoLibVenta.Venta.Enumerados.enumCondicionPago.Contado) { var r3 = ctx.Database.ExecuteSqlCommand("update sistema_contadores set a_cxc_recibo=a_cxc_recibo+1"); if (r3 == 0) { result.Mensaje = "PROBLEMA AL ACTUALIZAR CONTADOR DE CXC RECIBO "; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } var r4 = ctx.Database.ExecuteSqlCommand("update sistema_contadores set a_cxc_recibo_numero=a_cxc_recibo_numero+1"); if (r4 == 0) { result.Mensaje = "PROBLEMA AL ACTUALIZAR CONTADOR DE CXC RECIBO NUMERO"; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } var r5 = ctx.Database.ExecuteSqlCommand("update sistema_contadores set a_cxc=a_cxc+1"); if (r5 == 0) { result.Mensaje = "PROBLEMA AL ACTUALIZAR CONTADOR DE CXC PAGO"; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } var cntCxcRecibo = ctx.Database.SqlQuery <int>("select a_cxc_recibo from sistema_contadores").FirstOrDefault(); var cntCxcReciboNumero = ctx.Database.SqlQuery <int>("select a_cxc_recibo_numero from sistema_contadores").FirstOrDefault(); var cntCxcPago = ctx.Database.SqlQuery <int>("select a_cxc from sistema_contadores").FirstOrDefault(); autoCxcRecibo = cntCxcRecibo.ToString().Trim().PadLeft(10, '0'); autoCxcReciboNumero = cntCxcReciboNumero.ToString().Trim().PadLeft(10, '0'); autoCxcPago = cntCxcPago.ToString().Trim().PadLeft(10, '0'); } //VALORES A PROCESAR var fechaSistema = ctx.Database.SqlQuery <DateTime>("select now()").FirstOrDefault(); var documentoVenta = ""; var fechaVencimiento = fechaSistema.AddDays(ficha.DiasCredito); var entVenta = new LibEntityVentas.ventas() { auto = autoVenta, documento = documentoVenta, fecha = fechaSistema.Date, fecha_vencimiento = fechaVencimiento, razon_social = ficha.ClienteNombre, dir_fiscal = ficha.ClienteDirFiscal, ci_rif = ficha.ClienteCiRif, tipo = ficha.DocumentoCodigo, exento = ficha.AgregarTotales.MontoExento, base1 = ficha.AgregarTotales.MontoBase1, base2 = ficha.AgregarTotales.MontoBase2, base3 = ficha.AgregarTotales.MontoBase3, impuesto1 = ficha.AgregarTotales.MontoImp1, impuesto2 = ficha.AgregarTotales.MontoImp2, impuesto3 = ficha.AgregarTotales.MontoImp3, @base = ficha.AgregarTotales.MontoBase, impuesto = ficha.AgregarTotales.MontoImpuesto, total = ficha.AgregarTotales.MontoTotal, tasa1 = ficha.AgregarTotales.Tasa1, tasa2 = ficha.AgregarTotales.Tasa2, tasa3 = ficha.AgregarTotales.Tasa3, nota = ficha.Notas, tasa_retencion_islr = 0.0m, tasa_retencion_iva = 0.0m, retencion_iva = 0.0m, retencion_islr = 0.0m, auto_cliente = ficha.AutoCliente, codigo_cliente = ficha.ClienteCodigo, mes_relacion = ficha.MesRelacion, control = ficha.SerialFiscal, fecha_registro = fechaSistema.Date, orden_compra = ficha.AgregarEncabezado.OrdenCompra, dias = ficha.DiasCredito, descuento1 = ficha.AgregarTotales.DescuentoMonto_1, descuento2 = ficha.AgregarTotales.DescuentoMonto_2, cargos = ficha.AgregarTotales.CargoMonto, descuento1p = ficha.AgregarTotales.DescuentoPorct_1, descuento2p = ficha.AgregarTotales.DescuentoPorct_2, cargosp = ficha.AgregarTotales.CargoPorct, columna = "1", estatus_anulado = "0", aplica = "", comprobante_retencion = "", subtotal_neto = ficha.AgregarTotales.SubTotalNeto, telefono = ficha.ClienteTelefono, factor_cambio = ficha.FactorCambio, codigo_vendedor = ficha.VendedorCodigo, vendedor = ficha.VendedorNombre, auto_vendedor = ficha.AutoVendedor, fecha_pedido = ficha.AgregarEncabezado.FechaPedido, pedido = ficha.AgregarEncabezado.Pedido, condicion_pago = ficha.CondicionPagoDescripcion, usuario = ficha.UsuarioNombre, codigo_usuario = ficha.UsuarioCodigo, codigo_sucursal = ficha.CodigoSucursal, hora = fechaSistema.ToShortTimeString(), transporte = ficha.TransporteNombre, codigo_transporte = ficha.TransporteCodigo, monto_divisa = ficha.AgregarTotales.MontoDivisa, despachado = ficha.AgregarEncabezado.DepachadoPor, dir_despacho = ficha.AgregarEncabezado.DireccionDespacho, estacion = ficha.Estacion, auto_recibo = autoCxcRecibo, recibo = autoCxcReciboNumero, renglones = ficha.Renglones, saldo_pendiente = ficha.AgregarTotales.SaldoPendiente, ano_relacion = ficha.AnoRelacion, comprobante_retencion_islr = "", dias_validez = 0, auto_usuario = ficha.AutoUsuario, auto_transporte = ficha.AutoTransporte, situacion = ficha.DocumentoSituacion, signo = ficha.DocumentoSigno, serie = ficha.AgregarEncabezado.Serie, tarifa = ficha.ClienteTarifa, tipo_remision = ficha.AgregarEncabezado.TipoRemision, documento_remision = ficha.AgregarEncabezado.DocumentoRemision, auto_remision = ficha.AgregarEncabezado.AutoRemision, documento_nombre = ficha.DocumentoNombre, subtotal_impuesto = ficha.AgregarTotales.MontoImpuesto, subtotal = ficha.AgregarTotales.SubTotal, auto_cxc = autoCxC, tipo_cliente = "", planilla = "", expediente = "", anticipo_iva = 0.0m, terceros_iva = 0.0m, neto = ficha.AgregarTotales.VentaNeta, costo = ficha.AgregarTotales.CostoVenta, utilidad = ficha.AgregarTotales.Utilidad, utilidadp = ficha.AgregarTotales.UtilidadPorc, documento_tipo = ficha.DocumentoTipo, ci_titular = "", nombre_titular = "", ci_beneficiario = "", nombre_beneficiario = "", clave = "", denominacion_fiscal = ficha.ClienteDenominacionFiscal, cambio = ficha.CambioDar, estatus_validado = "0", cierre = "", fecha_retencion = new DateTime(2000, 01, 01), estatus_cierre_contable = "0", }; ctx.ventas.Add(entVenta); ctx.SaveChanges(); var sql = @"INSERT INTO ventas_detalle (auto_documento, auto_producto, codigo, nombre, auto_departamento, auto_grupo, auto_subgrupo, auto_deposito, cantidad, empaque, precio_neto, descuento1p, descuento2p, descuento3p, descuento1, descuento2, descuento3, costo_venta, total_neto, tasa, impuesto, total, auto, estatus_anulado, fecha, tipo, deposito, signo, precio_final, auto_cliente, decimales, contenido_empaque, cantidad_und, precio_und, costo_und, utilidad, utilidadp, precio_item, estatus_garantia, estatus_serial, codigo_deposito, dias_garantia, detalle, precio_sugerido, auto_tasa, estatus_corte, x, y, z, corte, categoria, cobranzap, ventasp, cobranzap_vendedor, ventasp_vendedor, cobranza, ventas, cobranza_vendedor, ventas_vendedor, costo_promedio_und, costo_compra, estatus_checked, tarifa, total_descuento, codigo_vendedor, auto_vendedor, hora) Values ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}, {20}, {21}, {22}, {23}, {24}, {25}, {26}, {27}, {28}, {29}, {30}, {31}, {32}, {33}, {34}, {35}, {36}, {37}, {38}, {39}, {40}, {41}, {42}, {43}, {44}, {45}, {46}, {47}, {48}, {49}, {50}, {51}, {52}, {53}, {54}, {55}, {56}, {57}, {58}, {59}, {60}, {61}, {62}, {63}, {64}, {65}, {66})"; //CUERPO DEL DOCUMENTO => ITEMS var item = 0; foreach (var dt in ficha.AgregarCuerpo) { item += 1; var autoItem = item.ToString().Trim().PadLeft(10, '0'); var isGarantia = dt.IsGarantia ? "1" : "0"; var isSerial = dt.IsSerial ? "1" : "0"; var vd = ctx.Database.ExecuteSqlCommand(sql, autoVenta, dt.AutoProducto, dt.CodigoPrd, dt.NombrePrd, dt.AutoDepartamento, dt.AutoGrupo, dt.AutoSubGrupo, dt.AutoDeposito, dt.Cantidad, dt.Empaque, dt.PrecioNeto, dt.DescuentoPorc_1, dt.DescuentoPorc_2, dt.DescuentoPorc_3, dt.DescuentoMonto_1, dt.DescuentoMonto_2, dt.DescuentoMonto_3, dt.CostoVenta, dt.TotalNeto, dt.TasaIva, dt.MontoImpuesto, dt.MontoTotal, autoItem, "0", fechaSistema.Date, dt.Tipo, dt.DepositoDescripcion, dt.Signo, dt.PrecioFinal, dt.AutoCliente, dt.Decimales, dt.EmpaqueContenido, dt.CantidadUnd, dt.PrecioUnd, dt.CostoUnd, dt.UtilidadMonto, dt.UtilidadPorc, dt.PrecioItem, isGarantia, isSerial, dt.DepositoCodigo, dt.DiasGarantia, dt.Notas, 0.0m, dt.AutoTasaImpuesto, "0", 0.0m, 0.0m, 0.0m, "", dt.Categoria, 0.0m, 0.0m, 0.0m, 0.0m, 0.0m, 0.0m, 0.0m, 0.0m, dt.CostoPromedioUnd, dt.CostoPromedioCompra, "1", dt.TarifaPrecio, dt.MontoDescuento, dt.VendedorCodigo, dt.AutoVendedor, fechaSistema.ToShortTimeString()); if (vd == 0) { result.Mensaje = "PROBLEMA AL REGISTRAR ITEM [ " + Environment.NewLine + dt.NombrePrd + " ]"; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } } //DEPOSITO ACTUALIZAR foreach (var dt in ficha.AgregarActProductoDeposito) { var entPrdDeposito = ctx.productos_deposito.FirstOrDefault(w => w.auto_producto == dt.AutoProducto && w.auto_deposito == dt.AutoDeposito); if (entPrdDeposito == null) { result.Mensaje = "PROBLEMA AL ACTUALIZAR DEPOSITO"; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } entPrdDeposito.fisica -= dt.TotalUnd; entPrdDeposito.disponible -= dt.TotalUnd; ctx.SaveChanges(); } var sql2 = @"INSERT INTO productos_kardex (auto_producto,total,auto_deposito,auto_concepto,auto_documento, fecha,hora,documento,modulo,entidad,signo,cantidad,cantidad_bono,cantidad_und,costo_und,estatus_anulado, nota,precio_und,codigo,siglas) VALUES ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15},{16}, {17}, {18}, {19})"; //KARDEX MOV=> ITEMS foreach (var dt in ficha.AgregarKardex) { var vk = ctx.Database.ExecuteSqlCommand(sql2, dt.AutoProducto, dt.TotalCostoVenta, dt.AutoDeposito, dt.AutoConcepto, autoVenta, fechaSistema.Date, fechaSistema.ToShortTimeString(), documentoVenta, dt.Modulo, dt.Entidad, dt.Signo, dt.Cantidad, 0.0m, dt.CantidadUnd, dt.CostoPromedioUnd, "0", dt.Notas, dt.PrecioUnd, dt.Codigo, dt.Siglas); if (vk == 0) { result.Mensaje = "PROBLEMA AL REGISTRAR MOVIMIENTO KARDEX [ " + Environment.NewLine + dt.AutoProducto + " ]"; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } } ; //REGISTRA MOVIMIENTO DE CXC var entCxC = new LibEntityVentas.cxc() { auto = autoCxC, c_cobranza = 0.0m, c_cobranzap = 0.0m, fecha = fechaSistema.Date, tipo_documento = ficha.AgregarCxc.DocumentoVentaTipo, // "FAC", documento = documentoVenta, fecha_vencimiento = fechaVencimiento, nota = ficha.AgregarCxc.Notas, //"", importe = ficha.AgregarCxc.MontoImporteTotal, //.AgregarTotales.MontoTotal, acumulado = ficha.AgregarCxc.MontoAcumulado, // acumulado, auto_cliente = ficha.AgregarCxc.AutoCliente, // ficha.AutoCliente, cliente = ficha.AgregarCxc.ClienteNombre, // ficha.ClienteNombre, ci_rif = ficha.AgregarCxc.ClienteCiRif, // ficha.ClienteCiRif, codigo_cliente = ficha.AgregarCxc.ClienteCodigo, //ficha.ClienteCodigo, estatus_cancelado = ficha.AgregarCxc.IsCancelado?"1":"0", // estatusCancelado, resta = ficha.AgregarCxc.MontoResta, //resta, estatus_anulado = "0", auto_documento = autoVenta, numero = "", auto_agencia = "0000000001", agencia = "", signo = ficha.AgregarCxc.Signo, // 1, auto_vendedor = ficha.AgregarCxc.AutoVendedor, // ficha.AutoVendedor, c_departamento = 0.0m, c_ventas = 0.0m, c_ventasp = 0.0m, serie = ficha.AgregarCxc.DocumentoVentaSerie, // ficha.AgregarEncabezado.Serie, importe_neto = ficha.AgregarCxc.MontoImporteNeto, // ficha.AgregarTotales.SubTotalNeto, dias = 0, castigop = 0.0m, }; ctx.cxc.Add(entCxC); ctx.SaveChanges(); //SI LA FORMA DE PAGO ES CONTADO, GENERA MOVIMIENTO DE PAGO if (ficha.CondicionPago == DtoLibVenta.Venta.Enumerados.enumCondicionPago.Contado) { var entCliente = ctx.clientes.Find(ficha.AutoCliente); if (entCliente == null) { result.Mensaje = "PROBLEMA AL ACTUALIZAR ENTIDAD [ CLIENTE ]"; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } entCliente.fecha_ult_venta = fechaSistema; ctx.SaveChanges(); var entCxcPago = new LibEntityVentas.cxc() { auto = autoCxcPago, c_cobranza = 0.0m, c_cobranzap = 0.0m, fecha = fechaSistema.Date, tipo_documento = "PAG", //EL PAGO HACE REFENCIA AL RECIBO GENERADO DE CXC documento = autoCxcReciboNumero, //EL PAGO HACE REFENCIA AL RECIBO GENERADO DE CXC fecha_vencimiento = fechaVencimiento, nota = ficha.Notas, importe = ficha.AgregarTotales.MontoTotal, acumulado = 0, auto_cliente = ficha.AutoCliente, cliente = ficha.ClienteNombre, ci_rif = ficha.ClienteCiRif, codigo_cliente = ficha.ClienteCodigo, estatus_cancelado = "0", resta = 0.0m, estatus_anulado = "0", auto_documento = autoCxcRecibo, //EL PAGO HACE REFENCIA AL RECIBO GENERADO DE CXC numero = "", auto_agencia = "0000000001", agencia = "", signo = -1, auto_vendedor = ficha.AutoVendedor, c_departamento = 0.0m, c_ventas = 0.0m, c_ventasp = 0.0m, serie = "", importe_neto = 0.0m, dias = 0, castigop = 0.0m, }; ctx.cxc.Add(entCxcPago); ctx.SaveChanges(); var entCxcRecibo = new LibEntityVentas.cxc_recibos() { auto = autoCxcRecibo, documento = autoCxcReciboNumero, fecha = fechaSistema, auto_usuario = ficha.AutoUsuario, importe = ficha.AgregarTotales.MontoTotal, usuario = ficha.UsuarioNombre, monto_recibido = ficha.MontoRecibido, cobrador = ficha.CobradorNombre, auto_cliente = ficha.AutoCliente, cliente = ficha.ClienteNombre, ci_rif = ficha.ClienteCiRif, codigo = ficha.ClienteCodigo, estatus_anulado = "0", direccion = ficha.ClienteDirFiscal, telefono = ficha.ClienteTelefono, auto_cobrador = ficha.AutoCobrador, anticipos = 0.0m, cambio = ficha.CambioDar, nota = ficha.Notas, codigo_cobrador = ficha.CobradorCodigo, auto_cxc = autoCxC, retenciones = 0.0m, descuentos = 0.0m, hora = "", cierre = "", }; ctx.cxc_recibos.Add(entCxcRecibo); ctx.SaveChanges(); var entCxcDocumento = new LibEntityVentas.cxc_documentos() { id = 1, fecha = fechaSistema.Date, tipo_documento = "FAC", documento = documentoVenta, importe = ficha.AgregarTotales.MontoTotal, operacion = "Pago", auto_cxc = autoCxC, auto_cxc_pago = autoCxcPago, auto_cxc_recibo = autoCxcRecibo, numero_recibo = autoCxcReciboNumero, fecha_recepcion = new DateTime(2000, 01, 01), dias = 0, castigop = 0.0m, comisionp = 0.0m, }; ctx.cxc_documentos.Add(entCxcDocumento); ctx.SaveChanges(); foreach (var fp in ficha.AgregarFormaPago) { var entCxcMedioPago = new LibEntityVentas.cxc_medio_pago() { auto_recibo = autoCxcRecibo, auto_medio_pago = fp.AutoMedioPago, auto_agencia = fp.AutoAgencia, medio = fp.MedioPagoDescripcion, codigo = fp.MedioPagoCodigo, monto_recibido = fp.MontoRecibido, fecha = fechaSistema, estatus_anulado = "0", numero = fp.NumeroRef, agencia = fp.AgenciaDescripcion, auto_usuario = ficha.AutoUsuario, lote = fp.Lote, referencia = fp.Referencia, auto_cobrador = ficha.AutoCobrador, cierre = "", fecha_agencia = new DateTime(2001, 01, 01), }; ctx.cxc_medio_pago.Add(entCxcMedioPago); ctx.SaveChanges(); } } else { var entCliente = ctx.clientes.Find(ficha.AutoCliente); if (entCliente == null) { result.Mensaje = "PROBLEMA AL ACTUALIZAR ENTIDAD [ CLIENTE ]"; result.Result = DtoLib.Enumerados.EnumResult.isError; return(result); } entCliente.fecha_ult_venta = fechaSistema; entCliente.saldo += ficha.AgregarTotales.MontoTotal; entCliente.disponible -= ficha.AgregarTotales.MontoTotal; ctx.SaveChanges(); } ts.Complete(); result.Auto = autoVenta; } } } catch (DbEntityValidationException e) { var msg = ""; foreach (var eve in e.EntityValidationErrors) { foreach (var ve in eve.ValidationErrors) { msg += ve.ErrorMessage; } } result.Mensaje = msg; result.Result = DtoLib.Enumerados.EnumResult.isError; } catch (System.Data.Entity.Infrastructure.DbUpdateException e) { var msg = ""; foreach (var eve in e.Entries) { //msg += eve.m; foreach (var ve in eve.CurrentValues.PropertyNames) { msg += ve.ToString(); } } result.Mensaje = msg; result.Result = DtoLib.Enumerados.EnumResult.isError; } catch (Exception e) { result.Mensaje = e.Message; result.Result = DtoLib.Enumerados.EnumResult.isError; } return(result); }
public DtoLib.ResultadoAuto VentaAgregar(DtoLibVenta.Venta.Agregar ficha) { return(ServiceProv.VentaAgregar(ficha)); }