public Boolean fu_ing_lot_art(c_cnx000 _cnx000) { try { if (va_nro_lote == null) { Exception ex = new Exception("Introduzca el Número de Lote"); throw ex; } c_inv103 o_inv103 = new c_inv103(); DataTable dt_lote = o_inv103._01(va_nro_lote, 3, "1"); if (dt_lote.Rows.Count == 0) { //Al no Existir el Lote, Seteamos los parametros o_inv103.va_cod_suc = va_cod_suc; o_inv103.va_emp_cod = va_emp_cod; o_inv103.va_des_lot = va_nro_lote; o_inv103.va_nro_lot = va_nro_lote; o_inv103.va_fec_ven = va_fec_ven; o_inv103.va_est_ado = "H"; //Realizamos el registro del Lote o_inv103._02(); } c_inv102 o_inv102 = new c_inv102(); //Verifciamos si Existe la relacion Lote, Producto x Almacen //Sino existe, realizamos un Insert, caso contrario sumamos el Stock if (!o_inv102.fu_sel_lot_pro_alm(_cnx000, va_emp_cod, va_cod_suc, va_cod_alm, va_cod_pro, va_lot_cod)) { string sSQL = String.Format("INSERT INTO inv102(va_emp_cod,va_cod_suc,va_lot_cod,va_cod_pro,va_cod_alm,va_fec_ven,va_sal_can) VALUES({0},{1},{2},'{3}',{4},'{5}',{6})", va_emp_cod, va_cod_suc, va_lot_cod, va_cod_pro, va_cod_alm, va_fec_ven.ToShortDateString(), va_sal_can); _cnx000.fu_exe_sql_no(sSQL); } else { va_sal_can += o_inv102.va_sal_can; } DataRow row = dt_lote.Rows[0]; va_lot_cod = Convert.ToInt32(row["va_cod_lote"]); StringBuilder vv_str_sql = new StringBuilder(); vv_str_sql.AppendLine(" update inv102 "); vv_str_sql.AppendFormat(" set va_sal_can ={0}, ", va_sal_can); vv_str_sql.AppendFormat(" WHERE va_cod_alm={0}", va_cod_alm); vv_str_sql.AppendFormat(" and va_cod_pro='{0}'", va_cod_pro); vv_str_sql.AppendFormat(" and va_emp_cod={0}", va_emp_cod); vv_str_sql.AppendFormat(" and va_cod_suc={0}", va_cod_suc); vv_str_sql.AppendFormat(" and va_lot_cod={0}", va_lot_cod); return(_cnx000.fu_exe_sql_no(vv_str_sql.ToString())); } catch (Exception ex) { throw ex; } }
//#region DatosEnumerados // enum TipoTransaccions // { // Ingreso = 1, // Egreso = 2, // Traspaso = 3 // } //#endregion #region Metodos /// <summary> /// funcion "Consulta Producto x Almacen" /// </summary> /// <param name="o_cnx000">Objeto Conexion</param> /// <param name="cod_emp">Codigo de Empresa</param> /// <param name="cod_suc">Codigo de Sucursal</param> /// <param name="cod_alm">Codigo del Almacén</param> /// <param name="cod_pro">Codigo del Producto</param> /// <returns></returns> private Boolean fu_sel_pro_alm(c_cnx000 _cnx000, int cod_emp, int cod_suc, int cod_alm, string cod_pro) { try { vv_str_sql = new StringBuilder(); vv_str_sql.AppendLine(" SELECT * fROM inv101 "); vv_str_sql.AppendFormat(" WHERE va_emp_cod={0}", cod_emp); vv_str_sql.AppendFormat(" AND va_cod_suc={0}", cod_suc); vv_str_sql.AppendFormat(" AND va_cod_alm={0}", cod_alm); vv_str_sql.AppendFormat(" AND va_cod_pro='{0}'", cod_pro); DataTable dt_pro_alm = o_cnx000.fu_exe_sql_si(vv_str_sql.ToString()); if (dt_pro_alm.Rows.Count > 0) { DataRow row = dt_pro_alm.Rows[0]; va_pro_alm = Convert.ToInt32(row["va_pro_alm"]); va_emp_cod = Convert.ToInt32(row["va_emp_cod"]); va_cod_suc = Convert.ToInt32(row["va_cod_suc"]); va_cod_alm = Convert.ToInt32(row["va_cod_alm"]); va_cod_pro = row["va_cod_pro"].ToString(); va_sal_can = Convert.ToDecimal(row["va_sal_can"]); va_cos_ubs = Convert.ToDecimal(row["va_cos_ubs"]); va_cos_uus = Convert.ToDecimal(row["va_cos_uus"]); va_ult_cbs = Convert.ToDecimal(row["va_ult_cbs"]); va_ult_cus = Convert.ToDecimal(row["va_ult_cus"]); return(true); } else { return(false); } } catch (Exception ex) { throw ex; } }
/// <summary> /// Actualiza los valor de inventarios de productos y almacen productos por una operación de ingreso /// </summary> public Boolean fu_ing_art(c_cnx000 _cnx000) { // StockTrans = Stock en tránsito // StockTrans = 0 Cuando es ingreso normal // StockTrans <> 0 Cuando es ingreso por compras (Recepcion) // StockTrans < cant Solo cuando se recibe mas de lo pedido en O/C // ItemDetalle = Registro de detalle con producto y cantidad // Ajuste = Variable de ajuste por diferencia de costos, se retorna el valor de ajuste decimal dbl_Stock; // Stock decimal dbl_CostoBs; // Costo total Bs decimal dbl_CostoUsd; // Costo total USD string sSQL; bool lSerie = false; bool lLote = false; try { if (_cnx000 == null) { o_cnx000.fu_abr_cnx(); } else { o_cnx000 = _cnx000; } c_inv002 o_inv002 = new c_inv002(); //Producto c_inv011 o_inv011 = new c_inv011(); //Almacen c_inv101 o_inv101 = new c_inv101(); //Producto x Almacen // Si no existe el producto en el almacén se crea uno nuevo if (!o_inv101.fu_sel_pro_alm(o_cnx000, va_emp_cod, va_cod_suc, va_cod_alm, va_cod_pro)) { DataTable dt_pro = o_inv002._05(va_cod_pro); if (!(dt_pro.Rows.Count > 0)) { Exception ex = new Exception("El Producto " + va_cod_pro + " NO esta registrado"); throw ex; } else { DataRow row = dt_pro.Rows[0]; if (row["va_ban_lot"].ToString() == "1") //Verificamos si Controla Lote { lLote = true; } if (row["va_ban_ser"].ToString() == "1") //Verificamos si Controla Serie { lSerie = true; } } if (!(o_inv011._05(va_cod_alm).Rows.Count > 0)) { Exception ex = new Exception("El Almacen " + va_cod_pro + " NO esta registrado"); throw ex; } sSQL = String.Format("INSERT INTO inv101(va_emp_cod,va_cod_suc,va_cod_alm,va_cod_pro) VALUES({0},{1},{2},'{3}')", va_emp_cod, va_cod_suc, va_cod_alm, va_cod_pro); o_cnx000.fu_exe_sql_no(sSQL); o_inv101.va_cos_ubs = 0; o_inv101.va_cos_uus = 0; o_inv101.va_sal_can = 0; } //Verificamos si el producto Controla Lote if (lLote) { c_inv102 o_inv102 = new c_inv102(); o_inv102.va_nro_lote = va_nro_lote; o_inv102.va_emp_cod = va_emp_cod; o_inv102.va_cod_suc = va_cod_suc; o_inv102.va_cod_pro = va_cod_pro; o_inv102.va_cod_alm = va_cod_alm; if (!o_inv102.fu_ing_lot_art(_cnx000)) { Exception ex = new Exception("No se pudo Registrar el Ingreso Por Lote del Producto: " + va_cod_pro); throw ex; } } if (lSerie) { } dbl_CostoBs = o_inv101.va_cos_ubs; dbl_CostoUsd = o_inv101.va_cos_uus; dbl_Stock = o_inv101.va_sal_can; //Calculo del Costo Promedio va_sal_can += dbl_Stock; va_cos_ubs = Math.Round((va_cos_ubs + dbl_CostoBs) / va_sal_can, 6); va_cos_uus = Math.Round((va_cos_uus + dbl_CostoUsd) / va_sal_can, 6); StringBuilder vv_str_sql = new StringBuilder(); vv_str_sql.AppendLine(" update inv101 "); vv_str_sql.AppendFormat(" set va_sal_can ={0}, ", va_sal_can); vv_str_sql.AppendFormat(" va_cos_ubs ={0}, ", va_cos_ubs); vv_str_sql.AppendFormat(" va_cos_uus ={0}, ", va_cos_uus); vv_str_sql.AppendFormat(" va_ult_cbs ={0}, ", va_ult_cbs); vv_str_sql.AppendFormat(" va_ult_cus ={0} ", va_ult_cus); vv_str_sql.AppendFormat(" WHERE va_cod_alm={0}", va_cod_alm); vv_str_sql.AppendFormat(" and va_cod_pro='{0}'", va_cod_pro); vv_str_sql.AppendFormat(" and va_emp_cod={0}", va_emp_cod); vv_str_sql.AppendFormat(" and va_cod_suc={0}", va_cod_suc); return(o_cnx000.fu_exe_sql_no(vv_str_sql.ToString())); } catch (Exception ex) { throw ex; } }
public bool fu_reg_mov(c_cnx000 _cnx000, TipoTransaccions tipo) { try { if (tipo == TipoTransaccions.Ingreso) { StringBuilder vv_str_sql = new StringBuilder(); vv_str_sql.AppendLine(" Insert into inv100( "); vv_str_sql.AppendLine("va_emp_cod,va_cod_suc,va_gst_cod,va_fec_pro,va_tip_tra,va_cod_doc,va_tra_org,"); vv_str_sql.AppendLine("va_fec_tra,va_ref_doc,va_mon_tra,va_tra_glo,va_cod_pro,va_can_pro,va_cos_uni,"); vv_str_sql.AppendLine("va_imp_tot,va_alm_mov,va_lot_cod,va_fec_ven,va_tra_fac,va_tra_ret,va_tas_cam,va_nro_tal)"); vv_str_sql.AppendFormat(" values({0}, ", va_emp_cod); vv_str_sql.AppendFormat(" {0}, ", va_cod_suc); vv_str_sql.AppendFormat(" {0}, ", va_gst_cod); vv_str_sql.AppendFormat(" '{0}', ", va_fec_pro.ToShortDateString()); vv_str_sql.AppendFormat(" '{0}', ", "1"); vv_str_sql.AppendFormat(" '{0}', ", va_mod_org); vv_str_sql.AppendFormat(" {0}, ", va_tra_org); vv_str_sql.AppendFormat(" '{0}', ", va_fec_tra.ToShortDateString()); vv_str_sql.AppendFormat(" {0}, ", va_ref_doc); vv_str_sql.AppendFormat(" '{0}', ", va_mon_tra); vv_str_sql.AppendFormat(" '{0}', ", va_tra_glo); vv_str_sql.AppendFormat(" '{0}', ", va_cod_pro); vv_str_sql.AppendFormat(" {0}, ", va_can_pro); vv_str_sql.AppendFormat(" {0}, ", va_cos_uni); vv_str_sql.AppendFormat(" {0}, ", va_imp_tot); vv_str_sql.AppendFormat(" {0}, ", va_alm_mov); vv_str_sql.AppendFormat(" '{0}', ", va_lot_cod); vv_str_sql.AppendFormat(" '{0}', ", va_fec_ven.ToShortDateString()); vv_str_sql.AppendFormat(" '{0}', ", va_tra_fac); vv_str_sql.AppendFormat(" '{0}', ", va_tra_ret); vv_str_sql.AppendFormat(" {0}, ", va_tas_cam); vv_str_sql.AppendFormat(" {0}) ", va_nro_tal); if (!_cnx000.fu_exe_sql_no(vv_str_sql.ToString())) { Exception ex = new Exception("No se pudo Registrar el Movimiento del Producto: " + va_cod_pro); throw ex; } else { c_inv101 o_inv101 = new c_inv101(); o_inv101.va_cod_alm = va_alm_mov; o_inv101.va_cod_pro = va_cod_pro; o_inv101.va_cod_suc = va_cod_suc; o_inv101.va_cos_ubs = va_cos_uni; o_inv101.va_sal_can = va_can_pro; c_adm013 objTipo = new c_adm013(); DataTable dtTipo = objTipo._05(va_fec_tra.ToShortDateString()); if (dtTipo.Rows.Count == 0) { o_inv101.va_cos_uus = Math.Round(va_cos_uni / va_tas_cam, 2); } else { o_inv101.va_cos_uus = Math.Round(va_cos_uni / Convert.ToDecimal(((DataRow)dtTipo.Rows[0])["va_val_bus"]), 2); } o_inv101.va_emp_cod = va_emp_cod; o_inv101.va_fec_ven = va_fec_ven; o_inv101.va_nro_lote = va_lot_cod; o_inv101.va_ult_cbs = va_cos_uni; o_inv101.va_ult_cus = o_inv101.va_cos_uus; o_inv101.va_est_ado = "H"; if (!o_inv101.fu_ing_art(_cnx000)) { Exception ex = new Exception("No se pudo Registrar el Movimiento del Producto: " + va_cod_pro); throw ex; } } } return(true); } catch (Exception ex) { throw ex; } }