public Boolean compararPrecio(string codProducto, int tipoListaPrecio, decimal precio) { //DESCRIPCION: Compara si el precio ha variado o no (VENTANA MODAL - ACTUALIZAR) Boolean respuesta = false; Decimal precioBD = 0; //no tiene precio CLNPrecio clnPrecio = new CLNPrecio(); CADPrecio CADPrecio = new CADPrecio(); //NOTA: ES POSIBLE ACTUALIZAR UN VALOR DE PRECIO DE (0) A OTRO PRECIO MAYOR A CERO (0) ó //DE UN VALOR DE PRECIO DIFERENTE DE CERO A CERO (0) try { //Obtener lista de precios por Producto precioBD = CADPrecio.ObtenerPrecioXProducto(codProducto, tipoListaPrecio); //cuando no encuentra precio en la TblPrecio el valor automatico asignado es cero (0), desde el store. if (!tipoListaPrecio.Equals(0)) //Tipo de Precio es DISTINTO del PRECIO COSTO. { if (precioBD.Equals(-1)) //NO SE ENCONTRÓ TIPO DE PRECIO EN LA TABLA: TBLPRECIO { //POR DEFECTO CUANDO NO SE ENCUENTRE EL TIPO DE PRECIO EN LA TABLA: TBLPRECIO, SE RETORNA (-1) DEL STORE. //INSERTAR PRECIO VENTA EN LA BASE DE DATOS EN LA TABLA: TblPrecio CADPrecio.ActualizarInsertarPrecioModal(codProducto, tipoListaPrecio, precio, 3); //INSERTAR PRECIO EN LA TABLA: TblPrecio (3) respuesta = true; } else //SI SE ENCONTRÓ EL TIPO DE PRECIO EN LA TABLA: TBLPRECIO { if (!precioBD.Equals(precio)) { //ACTUALIZAR PRECIO COSTO EN LA BASE DE DATOS EN LA TABLA: TblProducto CADPrecio.ActualizarInsertarPrecioModal(codProducto, tipoListaPrecio, precio, 2); //ACTUALIAZR PRECIO EN LA TABLA: TblProducto (1) respuesta = true; } } } else //Tipo de Precio es IGUAL a PRECIO COSTO { if (!precioBD.Equals(precio)) //SI EL PRECIO DE LA BD ES DISTINTO AL PRECIO INGRESADO POR FORMULARIO SE ACTUALIZARÁ { //ACTUALIZAR PRECIO EN LA BASE DE DATOS EN LA TABLA: TblPrecio CADPrecio.ActualizarInsertarPrecioModal(codProducto, tipoListaPrecio, precio, 1); //ACTUALIZAR PRECIO EN LA TABLA: TblProducto (1) respuesta = true; } } } catch (Exception ex) { ex.StackTrace.ToString(); } return(respuesta); }
public Boolean compararDataExcelvsDataTablas(List <CENCPrecio> dataExcel, List <CENCPrecio> dataTablas) { //DESCRIPCION: Compara Data Excel versus Data de las Tablas String valorExcel = ""; String valorTabla = ""; String codProductoExcel = ""; String codProductoBD = ""; Double dvalorExcel; Double dvalorTabla; Boolean flag = false; CLNPrecio clnPrecio = new CLNPrecio(); //DESCRIPCION: Comparar data de Excel vs Tabla try { for (int i = 0; i < dataExcel.Count; i++) //Data de Excel { for (int j = 0; j < dataTablas.Count; j++) //Data de Tablas { codProductoExcel = dataExcel[i].CodProducto.ToUpper(); //SE PASA A MAYUSCULAS PUES C# "SI" ES SENSIBLE A MAYUSCULAS Y/O MINUSCULAS SIN EMBARGO SQL "NO" codProductoBD = dataTablas[j].CodProducto.ToUpper(); //SE PASA A MAYUSCULAS PUES C# "SI" ES SENSIBLE A MAYUSCULAS Y/O MINUSCULAS SIN EMBARGO SQL "NO" if (codProductoExcel.Equals(codProductoBD)) //Buando codigo de producto de Excel en la Data de Tablas { //INICIO: DE LA COMPARACION DEL PRECIO COSTO DEL EXCEL VERSUS LA DATA DE LAS TABLAS valorExcel = dataExcel[i].PrecioCosto; valorTabla = dataTablas[j].PrecioCosto; dvalorExcel = Convert.ToDouble(valorExcel); //Convertimos los precios a Double para eliminar los ceros a la derecha en casos los haya dvalorTabla = Convert.ToDouble(valorTabla); //Convertimos los precios a Double para eliminar los ceros a la derecha en casos los haya //FIN: DE LA COMPARACION DEL PRECIO COSTO DEL EXCEL VERSUS LA DATA DE LAS TABLAS if (!dvalorExcel.Equals(dvalorTabla)) { //ACTUALIZO (DE LO CONTRARIO NO REALIZO NINGUNA ACCION) clnPrecio.RegistrarActualizarxCargaMasiva(dataExcel[i].CodProducto, 0, dvalorExcel, 1); } //INICIO: DE LA COMPARACION DEL DETALLE DE PRECIOS POR CADA PRODUCTO (Data del Excel versus Tablas de la Base de Datos) valorExcel = ""; valorTabla = ""; for (int k = 0; k < dataExcel[i].Ldprecios.Count; k++) { flag = false; //Inicializo para volver a comparar el Detalle de Precios del Excel con el Detalle de Precio de las Tablas for (int m = 0; m < dataTablas[j].Ldprecios.Count; m++) { if (dataExcel[i].Ldprecios[k].TipoListaPrecio == dataTablas[j].Ldprecios[m].TipoListaPrecio) //Comparar por cada Tipo de Precio del Excel con el Tipo de Precio registrado en la Base de Datos { flag = true; //Si encuentro el mismo tipo de precio del Excel con la Base de Datos de cada Producto => Obtengo el Precio Venta para verificar si el valor es diferente para actualizar valorExcel = dataExcel[i].Ldprecios[k].PrecioVenta; valorTabla = dataTablas[j].Ldprecios[m].PrecioVenta; dvalorExcel = Convert.ToDouble(valorExcel); //Convertimos los precios a Double para eliminar los ceros a la derecha en casos los haya dvalorTabla = Convert.ToDouble(valorTabla); //Convertimos los precios a Double para eliminar los ceros a la derecha en casos los haya if (!dvalorExcel.Equals(dvalorTabla)) //si el valor del precio del Excel es distinto al Precio de la Tabla (ACTUALIZO) { //ACTUALIZO (DE LO CONTRARIO NO REALIZO NINGUNA ACCION) clnPrecio.RegistrarActualizarxCargaMasiva(dataExcel[i].CodProducto, dataExcel[i].Ldprecios[k].TipoListaPrecio, dvalorExcel, 2); } } } //Si "NO" encontré el Tipo de Precio de la data del Excel en la Data de las Tablas recien inserto if (flag == false) { //INSERTO EN LA BASE DE DATOS (tblPrecio) clnPrecio.RegistrarActualizarxCargaMasiva(dataExcel[i].CodProducto, dataExcel[i].Ldprecios[k].TipoListaPrecio, Convert.ToDouble(dataExcel[i].Ldprecios[k].PrecioVenta), 3); } } //FIN: DE LA COMPARACION DEL DETALLE DE PRECIOS POR CADA PRODUCTO (Data del Excel versus Tablas de la Base de Datos) } //SINO ENCUENTRO EL PRODUCTO NO HAGO NADA (PUES SOLO ACTUALIZO O AGREGO UN TIPO DE PRECIO SI EL PRODUCTO YA EXISTE PUES ESTE MANTENEDOR SOLO ES DE PRECIOS) } } } catch (Exception ex) { throw ex; } return(true); }