/// <summary> /// Ejecuta una consulta de inserción a la tabla Asignacion_de_ordenes_cab. /// </summary> /// <param name="asigOrdenCab">Objeto de tipo AsignacionOrdenCabDTO</param> /// <returns>Variable de tipo int con la cantidad de registros ingresados.</returns> public int InsertAsignacionOrdenCabecera(AsignacionOrdenCabDTO asigOrdenCab) { List <SqlParameter> _sqlParam = new List <SqlParameter>(); string query = @" insert into Asignacion_de_ordenes_cab values( @catoperacion, @nroasignacion, @codproveedor, convert(date, @fechageneracion), convert(date, @fechaentrega), 0, @usuario, convert(date, @fechageneracion), @horageneracion, null, null, @completo )"; _sqlParam.Add(new SqlParameter("@catoperacion", SqlDbType.Int) { Value = asigOrdenCab.CodCatOperacion }); _sqlParam.Add(new SqlParameter("@nroasignacion", SqlDbType.VarChar) { Value = asigOrdenCab.NroAsignacion }); _sqlParam.Add(new SqlParameter("@codproveedor", SqlDbType.VarChar) { Value = asigOrdenCab.CodProveedor }); _sqlParam.Add(new SqlParameter("@fechageneracion", SqlDbType.DateTime) { Value = asigOrdenCab.FechaGeneracion }); _sqlParam.Add(new SqlParameter("@fechaentrega", SqlDbType.DateTime) { Value = asigOrdenCab.FechaEntrega }); _sqlParam.Add(new SqlParameter("@usuario", SqlDbType.VarChar) { Value = asigOrdenCab.Usuario }); _sqlParam.Add(new SqlParameter("@horageneracion", SqlDbType.VarChar) { Value = asigOrdenCab.HoraGeneracion }); _sqlParam.Add(new SqlParameter("@completo", SqlDbType.SmallInt) { Value = asigOrdenCab.Completo }); return(_trans.ExecuteQuery(query, _sqlParam)); }
/// <summary> /// Genera un nuevo número de asignación y según las operaciones seleccionadas categoriza y sub-categoriza cada uno de sus procesos /// por modelo. Construye un nuevo objeto tipo AsignacionOrdenDetDTO por cada proceso y se dispone a ejecutar el procedimiento DAL /// de Insert Asignación Detalle, y otro objeto de tipo AsignacionOrdenDetDTO para el procedimiento de Insert Asignación Cabecera. /// </summary> /// <param name="listAasignar">Lista genérica de tipo AasignarDTO con los valores a Asignar</param> /// <param name="listLanzamientoDet">Lista genérica de tipo LanzamientoDetDTO con los lanzamientos</param> /// <param name="user">Nombre de Usuario</param> /// <returns>Arreglo de tipo int con dos valores: cantidad de cabeceras ingresadas, y cantidad de detalles ingresados.</returns> public int[] IngresarAsignacionOrden(List <AasignarDTO> listAasignar, List <LanzamientoDetDTO> listLanzamientoDet, string user) { string nroAsignacion = NroDeOrdenAsignacion(); int filasInsertCab = 0; int filasInsertDet = 0; foreach (var aAsignar in listAasignar) { if (aAsignar.Asignacion == "Si") { int[] subcategoria; int categoriaOperacion = 0; if (aAsignar.CodCatOperacion == 500) { subcategoria = new int[] { 510, 530, 550 }; categoriaOperacion = 500; } else if (aAsignar.CodCatOperacion == 400) { subcategoria = new int[] { 430, 440, 450, 460, 470 }; categoriaOperacion = 400; } else { subcategoria = new int[] { aAsignar.CodCatOperacion }; categoriaOperacion = int.Parse(aAsignar.CodCatOperacion.ToString().Substring(0, 1) + "00"); } foreach (int subcat in subcategoria) { foreach (var lanzDet in listLanzamientoDet) { if ((lanzDet.Modelo == aAsignar.Modelo) && (lanzDet.Color == aAsignar.Color)) { foreach (int proceso in ProcesosPorModeloCategoria(lanzDet.Modelo, subcat)) { var asigOrdenDet = new AsignacionOrdenDetDTO() { CodCatOperacion = categoriaOperacion, NroAsignacion = nroAsignacion, Orden = lanzDet.Orden, Lote = lanzDet.Lote, Categoria = subcat, Proceso = proceso, CodProveedor = aAsignar.CodProveedor, FechaTermino = aAsignar.FechaRetorno, //0X46 = 70 Terminado = 70, Color = lanzDet.Color, Tallas = lanzDet.Tallas, Cantidades = lanzDet.Piezas, Usuario = user }; int insDet = _asignacionOrdenesDal.InsertAsignacionOrdenDetalle(asigOrdenDet); filasInsertDet = filasInsertDet + insDet; } } } } //Generar Cabecera de Asignacion de Ordenes var _asigOrdenCab = new AsignacionOrdenCabDTO() { CodCatOperacion = categoriaOperacion, NroAsignacion = nroAsignacion, CodProveedor = aAsignar.CodProveedor, FechaEntrega = aAsignar.FechaRetorno, Completo = aAsignar.TodasOperaciones == true ? (short)1 : (short)0, Usuario = user }; int insCab = _asignacionOrdenesDal.InsertAsignacionOrdenCabecera(_asigOrdenCab); filasInsertCab = filasInsertCab + insCab; //Generar siguiente numero de asignacion nroAsignacion = (long.Parse(nroAsignacion) + 1).ToString(); } } return(new int[] { filasInsertCab, filasInsertDet }); }