public static void GeneraOrdenesDeCompraPendientes() { string fhoy = DateTime.Now.ToShortDateString(); SolicitudMaterialesConsulta sol = new SolicitudMaterialesConsulta(); sol.Estatus.id = 6; // 6 = Por generar orden de compra sol.FechaDesde = Convert.ToDateTime(fhoy); sol.FechaHasta = Convert.ToDateTime(fhoy); List <EN.Abastos.SolicitudMateriales> ls = GetSolicitudDeMateriales(sol); if (ls != null && ls.Count > 0) { SDK.Inicializa(); bool Siguiente = false; foreach (EN.Abastos.SolicitudMateriales solicitud in ls) { if (SDK.AbreEmpresa(solicitud.BaseDeDatos)) { List <EN.Abastos.SolicitudMateriales> ls_aux = new List <EN.Abastos.SolicitudMateriales>(); int cidprov = 0; EN.Abastos.SolicitudMateriales saux = null; //Verifica la cantidad de ordenes de compra a generar // por proveedor de acuerdo a los artículos elegidos. foreach (DetalleSolicitudMateriales ds in solicitud.articulos) { if (cidprov != ds.item.CIDPROVEEDOR) { cidprov = ds.item.CIDPROVEEDOR; saux = new EN.Abastos.SolicitudMateriales(); saux = (EN.Abastos.SolicitudMateriales)solicitud.Clone(); saux.articulos = new List <DetalleSolicitudMateriales>(); saux.articulos.Add(ds); ls_aux.Add(saux); } else { saux.articulos.Add(ds); } } //Por cada diferente proveedor en la misma solicitud // se genera una orden de compra en el sistema comercial foreach (EN.Abastos.SolicitudMateriales sol_aux in ls_aux) { Siguiente = false; try { Documento documento = new Documento(); string codProveedor = documento.BuscaProveedorPorId(solicitud.CIDProveedor); //339 int idmoneda = documento.ObtieneIdMoneda(solicitud.Moneda); double importe = solicitud.total; string sconcepto = documento.ObtieneCodigoConcepto(solicitud.ConceptoDocumento); if (sconcepto.Trim().Length > 0) { string folio = documento.ObtieneFolioSiguiente(sconcepto); solicitud.FolioDocumento = folio; solicitud.SerieDocumento = ""; tDocumento docto = new tDocumento(); docto.aCodConcepto = sconcepto; docto.aSerie = ""; docto.aFecha = DateTime.Now.ToString("MM/dd/yyyy"); docto.aFolio = Convert.ToDouble(documento.Folio); docto.aCodigoCteProv = codProveedor; docto.aNumMoneda = idmoneda; docto.aImporte = importe; docto.aDescuentoDoc1 = 0; docto.aDescuentoDoc2 = 0; docto.aSistemaOrigen = 0; docto.aAfecta = 0; docto.aReferencia = ""; bool bCreado = false; try { bCreado = documento.AltaDeDocumento(docto); } catch (Exception ex) { throw ex; } if (bCreado) { //Inserta información adicional bCreado = documento.SetDatoDocumento("CTEXTOEXTRA1", new StringBuilder(solicitud.Usuario)); } if (bCreado) { int c = 1; foreach (DetalleSolicitudMateriales fila in solicitud.articulos) { tMovimiento tm = new tMovimiento(); tm.aConsecutivo = c; tm.aCodProdSer = fila.item.CCODIGOPRODUCTO.ToString(); tm.aCosto = 0; tm.aPrecio = fila.item.preciocompra; tm.aReferencia = ""; tm.aCodClasificacion = ""; tm.aCodAlmacen = "1"; tm.aUnidades = fila.cantidad; bCreado = false; try { Int32 idMov = documento.AltaMovimiento(tm); if (idMov > 0) { documento.SetDatoMovimiento("CIMPUESTO1", new StringBuilder(((fila.item.preciocompra * fila.cantidad) * 0.16).ToString())); documento.SetDatoMovimiento("CPORCENTAJEIMPUESTO1", new StringBuilder("16")); fila.CIDMOVIMIENTO = idMov; fila.FolioDocumento = folio; fila.SerieDocumento = ""; } else { throw new Exception(string.Format("Revise el log {0} en el visor de eventos del sistema", EN.General.Utils.EventLog)); } } catch (Exception ex) { throw ex; } c++; } } } else { throw new Exception("No se econtró el codigo del concepto " + solicitud.ConceptoDocumento); } InsertaSolicitud(solicitud); //Actualiza información de la solicitud en DB Siguiente = true; } catch (Exception ex) { EN.General.EventLog.WriteError(ex.ToString()); Siguiente = false; break; } } if (SDK.EmpresaAbierta) { SDK.CerrarEmpresa(solicitud.BaseDeDatos); } if (!Siguiente) { break; } } else { EN.General.EventLog.WriteError("Error al procesar la solicitud con id: " + solicitud.id); EN.General.EventLog.WriteError("Error al abrir Base de Datos " + solicitud.BaseDeDatos); } ActualizaEstatus("SICAS", solicitud.id, 4); } SDK.TerminaSDK(); } }
public static List <EN.Abastos.SolicitudMateriales> GetSolicitudDeMateriales(SolicitudMaterialesConsulta sol) { List <EN.Abastos.SolicitudMateriales> lr = new List <EN.Abastos.SolicitudMateriales>(); string sqlstr = "[Abastos].[SolicitudDeMaterialesEncabezado_Consulta]"; Hashtable m_params = new Hashtable(); if (sol.id > 0) { m_params.Add("@Solicitud_ID", sol.id); } if (sol.Division.id > 0) { m_params.Add("@Division_ID", sol.Division.id); } if (sol.Empresa.id > 0) { m_params.Add("@Empresa_ID", sol.Empresa.id); } if (sol.Departamento.id > 0) { m_params.Add("@Departamento_ID", sol.Departamento.id); } if (sol.Almacen.id > 0) { m_params.Add("@Almacen_ID", sol.Almacen.id); } if (sol.Estatus.id > 0) { m_params.Add("@EstatusSolicitud_ID", sol.Estatus.id); } m_params.Add("@FechaDesde", DateTime.ParseExact(sol.FechaDesde.ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture)); m_params.Add("@FechaHasta", DateTime.ParseExact(sol.FechaHasta.ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture)); DataTable dt = DBL.ExecuteSelectSP(m_params, sqlstr, Utils.CadenaConexionSICAS, Utils.ConexionTimeOut).Tables[0]; foreach (DataRow dr in dt.Rows) { EN.Abastos.SolicitudMateriales r = new EN.Abastos.SolicitudMateriales(); r.id = Convert.ToInt32(dr["SolicitudDeMaterial_ID"]); r.Division.id = Convert.ToInt32(dr["Division_ID"]); r.Division.descripcion = dr["Division"].ToString(); r.Empresa.id = Convert.ToInt32(dr["Empresa_ID"]); r.Empresa.descripcion = dr["Empresa"].ToString(); r.Departamento.id = Convert.ToInt32(dr["Departamento_ID"]); r.Departamento.descripcion = dr["Departamento"].ToString(); r.Almacen.id = Convert.ToInt32(dr["Almacen_ID"]); r.Almacen.descripcion = dr["Almacen"].ToString(); r.Estatus.id = Convert.ToInt32(dr["EstatusSolicitud_ID"]); r.Estatus.descripcion = dr["EstatusSolicitud"].ToString(); r.FechaElabora = Convert.ToDateTime(dr["FechaElaboracion"]).ToString("dd/MM/yyyy HH:mm"); if (dr["Comentarios"] != DBNull.Value) { r.Comentarios = dr["Comentarios"].ToString(); } if (dr["BaseDeDatos"] != DBNull.Value) { r.BaseDeDatos = dr["BaseDeDatos"].ToString(); } r.ConceptoDocumento = dr["ConceptoDocumento"].ToString(); r.Moneda = dr["Moneda"].ToString(); r.Usuario = dr["Usuario_ID"].ToString(); SetSolicitudDeMaterialesDetalle(r); SetSolicitudDeMaterialesSoportes(r); lr.Add(r); } return(lr); }
internal static object Consulta(SolicitudMaterialesConsulta sol) { return(CASCO.DAO.Abastos.SolicitudMateriales.GetSolicitudDeMateriales(sol)); }