private bool validar(fa_notaCreDeb_Info i_validar, ref string msg) { i_validar.lst_det = List_det.get_list(i_validar.IdTransaccionSession); i_validar.lst_cruce = List_cruce.get_list(i_validar.IdTransaccionSession).Where(q => q.seleccionado == true).ToList(); if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.no_fecha, cl_enumeradores.eModulo.FAC, i_validar.IdSucursal, ref msg)) { return(false); } if (i_validar.lst_det.Count == 0) { msg = "No ha ingresado registros en el detalle"; return(false); } if (i_validar.lst_det.Where(q => q.sc_cantidad == 0).Count() > 0) { msg = "Existen registros con cantidad 0 en el detalle"; return(false); } if (i_validar.lst_det.Where(q => q.IdProducto == 0).Count() > 0) { msg = "Existen registros sin producto en el detalle"; return(false); } if (i_validar.lst_cruce.Count > 0 && (Math.Round(Convert.ToDecimal(i_validar.lst_det.Sum(q => q.sc_total)) - Convert.ToDecimal(i_validar.lst_cruce.Sum(q => q.Valor_Aplicado)), 2, MidpointRounding.AwayFromZero) != 0)) { msg = "El valor aplicado en facturas es mayor al valor total de la nota de crédito"; return(false); } i_validar.IdBodega = (int)bus_punto_venta.get_info(i_validar.IdEmpresa, i_validar.IdSucursal, Convert.ToInt32(i_validar.IdPuntoVta)).IdBodega; i_validar.IdUsuario = SessionFixed.IdUsuario; i_validar.IdUsuarioUltMod = SessionFixed.IdUsuario; var tipo_nota = bus_tipo_nota.get_info(i_validar.IdEmpresa, i_validar.IdTipoNota); if (tipo_nota != null) { i_validar.IdCtaCble_TipoNota = tipo_nota.IdCtaCble; } if (i_validar.IdNota == 0 && i_validar.NaturalezaNota == "SRI") { var pto_vta = bus_punto_venta.get_info(i_validar.IdEmpresa, i_validar.IdSucursal, Convert.ToInt32(i_validar.IdPuntoVta)); if (pto_vta.EsElectronico == false) { var talonario = bus_talonario.get_info(i_validar.IdEmpresa, i_validar.CodDocumentoTipo, i_validar.Serie1, i_validar.Serie2, i_validar.NumNota_Impresa); if (talonario == null) { msg = "No existe un talonario creado con la numeración: " + i_validar.Serie1 + "-" + i_validar.Serie2 + "-" + i_validar.NumNota_Impresa; return(false); } if (talonario.Usado == true) { msg = "El talonario: " + i_validar.Serie1 + "-" + i_validar.Serie2 + "-" + i_validar.NumNota_Impresa + " se encuentra utilizado."; return(false); } if (bus_nota.DocumentoExiste(i_validar.IdEmpresa, i_validar.CodDocumentoTipo, i_validar.Serie1, i_validar.Serie2, i_validar.NumNota_Impresa)) { msg = "Existe una nota de crédito con el talonario: " + i_validar.Serie1 + "-" + i_validar.Serie2 + "-" + i_validar.NumNota_Impresa + " utilizado."; return(false); } if (talonario.es_Documento_Electronico == false) { i_validar.NumAutorizacion = talonario.NumAutorizacion; } } } if (i_validar.NaturalezaNota != "SRI") { i_validar.Serie1 = null; i_validar.Serie2 = null; i_validar.NumNota_Impresa = null; } foreach (var item in i_validar.lst_det) { if (item.sc_cantidad > item.sc_cantidad_factura) { msg = "No puede devolver una cantidad mayor a la facturado, Facturado[" + item.sc_cantidad_factura + "]: intenta devolver [" + item.sc_cantidad + "] produdcto [" + item.pr_descripcion + "]"; return(false); } } #region ValidarCentroCosto int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa); ct_parametro_Bus bus_parametro = new ct_parametro_Bus(); var info_ct_parametro = bus_parametro.get_info(IdEmpresa); if (i_validar.lst_det.Count > 0) { if (info_ct_parametro.EsCentroCostoObligatorio == true) { foreach (var item in i_validar.lst_det) { if (item.IdCentroCosto == "" || item.IdCentroCosto == null) { mensaje = "Debe seleccionar el centro de costo para los items del detalle"; return(false); } } } } #endregion return(true); }
private bool validar(in_Ing_Egr_Inven_Info i_validar, ref string msg) { if (i_validar.lst_in_Ing_Egr_Inven_det.Count == 0) { mensaje = "Debe ingresar al menos un producto"; return(false); } if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.cm_fecha, cl_enumeradores.eModulo.INV, i_validar.IdSucursal, ref msg)) { return(false); } #region ValidarExisteProductoxBodega var param = bus_in_param.get_info(i_validar.IdEmpresa); mensaje = bus_producto_x_bodega.ValidarProductoPorBodega(new List <in_producto_x_tb_bodega_Info>(i_validar.lst_in_Ing_Egr_Inven_det.Select(q => new in_producto_x_tb_bodega_Info { IdEmpresa = i_validar.IdEmpresa, IdSucursal = i_validar.IdSucursal, IdBodega = i_validar.IdBodega ?? 0, IdProducto = q.IdProducto, pr_descripcion = q.pr_descripcion }).ToList()), (param.ValidarCtaCbleTransacciones ?? false)); if (!string.IsNullOrEmpty(mensaje)) { return(false); } #endregion #region ValidarStock var lst_validar = i_validar.lst_in_Ing_Egr_Inven_det.GroupBy(q => new { q.IdProducto, q.pr_descripcion, q.tp_ManejaInven, q.se_distribuye }).Select(q => new in_Producto_Stock_Info { IdEmpresa = i_validar.IdEmpresa, IdSucursal = i_validar.IdSucursal, IdBodega = i_validar.IdBodega ?? 0, IdProducto = q.Key.IdProducto, pr_descripcion = q.Key.pr_descripcion, tp_manejaInven = q.Key.tp_ManejaInven, SeDestribuye = q.Key.se_distribuye, Cantidad = q.Sum(v => v.dm_cantidad_sinConversion), CantidadAnterior = q.Sum(v => v.CantidadAnterior), }).ToList(); if (!bus_producto.validar_stock(lst_validar, ref msg)) { return(false); } #endregion #region ValidarCentroCosto int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa); ct_parametro_Bus bus_parametro = new ct_parametro_Bus(); var info_ct_parametro = bus_parametro.get_info(IdEmpresa); if (i_validar.lst_in_Ing_Egr_Inven_det.Count > 0) { if (info_ct_parametro.EsCentroCostoObligatorio == true) { foreach (var item in i_validar.lst_in_Ing_Egr_Inven_det) { if (item.IdCentroCosto == "" || item.IdCentroCosto == null) { mensaje = "Debe seleccionar el centro de costo para los items del detalle"; return(false); } } } } #endregion return(true); }
private bool validar_factura(fa_factura_Info i_validar, ref string msg) { string MsgValidaciones = string.Empty; i_validar.lst_det = List_det.get_list(i_validar.IdTransaccionSession); if (i_validar.lst_det.Count == 0) { msg = "No ha ingresado registros en el detalle de la factura"; return(false); } if (i_validar.lst_det.Where(q => q.vt_cantidad == 0).Count() > 0) { msg = "Existen registros con cantidad 0 en el detalle de la factura"; return(false); } if (i_validar.lst_det.Where(q => q.IdProducto == 0).Count() > 0) { msg = "Existen registros sin producto en el detalle de la factura"; return(false); } if (i_validar.lst_det.Sum(q => q.vt_total) == 0) { msg = "La factura no tiene valor, por favor revise"; return(false); } #region Talonario var pto_vta = bus_punto_venta.get_info(i_validar.IdEmpresa, i_validar.IdSucursal, Convert.ToInt32(i_validar.IdPuntoVta)); if (pto_vta != null && pto_vta.EsElectronico) { var info_documento = bus_talonario.GetUltimoNoUsado(i_validar.IdEmpresa, cl_enumeradores.eTipoDocumento.FACT.ToString(), pto_vta.Su_CodigoEstablecimiento, pto_vta.cod_PuntoVta, pto_vta.EsElectronico, false); i_validar.vt_NumFactura = info_documento.NumDocumento; } i_validar.IdBodega = pto_vta.IdBodega; i_validar.vt_serie1 = pto_vta.Su_CodigoEstablecimiento; i_validar.vt_serie2 = pto_vta.cod_PuntoVta; i_validar.IdCaja = pto_vta.IdCaja; #endregion #region Validar cliente final var param = bus_param.get_info(i_validar.IdEmpresa); if (param != null && param.IdClienteConsumidorFinal != null && param.MontoMaximoConsumidorFinal > 0 && i_validar.IdCliente == param.IdClienteConsumidorFinal) { if (i_validar.info_resumen.Total > Convert.ToDecimal(param.MontoMaximoConsumidorFinal ?? 0)) { msg = "El límite de venta para consumidor final es de $ " + param.MontoMaximoConsumidorFinal.ToString() + ", por favor revise."; return(false); } } #endregion #region Resumen i_validar.info_resumen = new fa_factura_resumen_Info { SubtotalIVASinDscto = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero), SubtotalSinIVASinDscto = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero), Descuento = (decimal)Math.Round(i_validar.lst_det.Sum(q => q.vt_DescUnitario * q.vt_cantidad), 2, MidpointRounding.AwayFromZero), SubtotalIVAConDscto = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero), SubtotalSinIVAConDscto = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero), ValorIVA = (decimal)Math.Round(i_validar.lst_det.Sum(q => q.vt_iva), 2, MidpointRounding.AwayFromZero) }; i_validar.info_resumen.SubtotalSinDscto = i_validar.info_resumen.SubtotalIVASinDscto + i_validar.info_resumen.SubtotalSinIVASinDscto; i_validar.info_resumen.SubtotalConDscto = i_validar.info_resumen.SubtotalIVAConDscto + i_validar.info_resumen.SubtotalSinIVAConDscto; i_validar.info_resumen.Total = i_validar.info_resumen.SubtotalConDscto + i_validar.info_resumen.ValorIVA; #endregion i_validar.IdUsuario = SessionFixed.IdUsuario; i_validar.IdUsuarioUltModi = SessionFixed.IdUsuario; #region ValidacionDeTalonario if (i_validar.IdCbteVta == 0 && !pto_vta.EsElectronico) { var talonario = bus_talonario.get_info(i_validar.IdEmpresa, i_validar.vt_tipoDoc, i_validar.vt_serie1, i_validar.vt_serie2, i_validar.vt_NumFactura); if (talonario == null) { msg = "No existe un talonario creado con la numeración: " + i_validar.vt_serie1 + "-" + i_validar.vt_serie2 + "-" + i_validar.vt_NumFactura; return(false); } if (talonario.Usado == true) { msg = "El talonario: " + i_validar.vt_serie1 + "-" + i_validar.vt_serie2 + "-" + i_validar.vt_NumFactura + " se encuentra utilizado."; return(false); } if (bus_factura.factura_existe(i_validar.IdEmpresa, i_validar.vt_serie1, i_validar.vt_serie2, i_validar.vt_NumFactura)) { msg = "Existe una factura registrada con el número: " + i_validar.vt_serie1 + "-" + i_validar.vt_serie2 + "-" + i_validar.vt_NumFactura + "."; return(false); } } #endregion #region ValidarStock if (i_validar.lst_det.Where(q => q.tp_manejaInven == "S").Count() > 0) { if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.vt_fecha, cl_enumeradores.eModulo.INV, i_validar.IdSucursal, ref msg)) { return(false); } var lst_validar = i_validar.lst_det.GroupBy(q => new { q.IdProducto, q.pr_descripcion, q.tp_manejaInven, q.se_distribuye }).Select(q => new in_Producto_Stock_Info { IdEmpresa = i_validar.IdEmpresa, IdSucursal = i_validar.IdSucursal, IdBodega = i_validar.IdBodega, IdProducto = q.Key.IdProducto, pr_descripcion = q.Key.pr_descripcion, tp_manejaInven = q.Key.tp_manejaInven, SeDestribuye = q.Key.se_distribuye ?? false, Cantidad = q.Sum(v => v.vt_cantidad), CantidadAnterior = q.Sum(v => v.CantidadAnterior), }).ToList(); if (!bus_producto.validar_stock(lst_validar, ref msg)) { return(false); } } #endregion #region ValidarCentroCosto int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa); ct_parametro_Bus bus_parametro = new ct_parametro_Bus(); var info_ct_parametro = bus_parametro.get_info(IdEmpresa); if (i_validar.lst_det.Count > 0) { if (info_ct_parametro.EsCentroCostoObligatorio == true) { foreach (var item in i_validar.lst_det) { if (item.IdCentroCosto == "" || item.IdCentroCosto == null) { mensaje = "Debe seleccionar el centro de costo para los items del detalle"; return(false); } } } } #endregion return(true); }