/// <summary> /// Función utilizada para validar la fila de las dosis aplicadas /// </summary> /// <returns></returns> public string funValidarFila(int varDosisDisponibles) { string varMensaje = ""; //Validamos si la fila no tiene errores o inconsistencias if (AnmCodigoPadre.Equals(0)) { return(varMensaje = "El campo chapeta padre es requerido"); } if (IteCodigo.Equals("")) { return(varMensaje = "El campo item es requerido"); } if (DapLote.Equals("")) { return(varMensaje = "El campo lote es requerido"); } if (DapDosis.Equals(0)) { return(varMensaje = "El campo dosis aplicadas debe ser mayor a cero"); } if (DapDosis > varDosisDisponibles) { return(varMensaje = "El campo dosis aplicadas no puede ser mayor al de dosis disponibles"); } return(varMensaje); }
//Funciones /// <summary> /// Funcion utilizada para mandar a SAP la información de la salida de mercancia /// </summary> /// <returns></returns> public string funEnviarSalMercanciaSAP() { try { string mError = ""; int iError = 0; //Realizamos la conexion a SAP csAccesoDatos.proIniciarSesionSAP(); //Verificamos si el documento ya se encuentra en SAP DataTable dtInventarioSAP = funVerificarSalInventarioSAP(AnmCodigoMadre, DapSecuencia); //Si el documento se encuentra en SAP actualizamos la información de este en la informacion del animal if (dtInventarioSAP.Rows.Count > 0) { //Recuperamos en las variables los valores de SAP DapDocEntrySalidaSAP = int.Parse(dtInventarioSAP.Rows[0]["DocEntry"].ToString()); DapNumeroSalidaSAP = int.Parse(dtInventarioSAP.Rows[0]["DocNum"].ToString()); //Actualizamos en el movimiento los datos de SAP proActMovInventarioSalida(DapDocEntrySalidaSAP, DapNumeroSalidaSAP, AnmCodigoMadre, DapSecuencia); return(mError); } else { //En caso de no encontrarse en SAP //Instanciamos la variable con el objeto de SAP Salida de mercancias SAPbobsCOM.Documents varOIGE = csConexionSap.objConexionSap.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInventoryGenExit); //Recuperamos la informacion de la tabla de parametrizaciones para la activación del animal int varSerie = int.Parse(clsGenOpciones.CargarValor("G.Dos.Salida.CodSerie").ToString()); //Serie int varCodMovimiento = int.Parse(clsGenOpciones.CargarValor("G.Dos.Salida.CodMov").ToString()); //Codigo movimiento string varNomMovimiento = clsGenOpciones.CargarValor("G.Dos.Salida.NomMov"); //Movimientos string varCodBodega = clsGenOpciones.CargarValor("G.Dos.Salida.CodBod"); //Bodega string varComentario = "Salida por aplicacion de dosis"; string varCtaContable = clsFinPlaCuenta.GetAcctCodeDeMovimiento(IteCodigo, varCodMovimiento); //Validamos si hay cuenta contable para el movimiento utilizado if (string.IsNullOrEmpty(varCtaContable)) { return("No se pudo obtener la cuenta contable para el movimiento de salida"); } //Datos de cabecera de la salida de mercancia SAP varOIGE.Series = varSerie; //Serie varOIGE.DocDate = (DateTime)DapFecha; //Fecha de contabilización varOIGE.TaxDate = (DateTime)DapFecha; //Fecha de documento varOIGE.Comments = varComentario; //Comentarios varOIGE.JournalMemo = varComentario; //Comentario asiento contable varOIGE.PaymentGroupCode = -2; //Lista de precios (Ultimo precio determinado) //Valores del codigo y nombre del movimiento varOIGE.UserFields.Fields.Item("U_Ita_codmovimiento").Value = varCodMovimiento; //Codigo movimiento varOIGE.UserFields.Fields.Item("U_Ita_movimiento").Value = varNomMovimiento; //Movimientos //Valores de la auditoria del sistema umbrella varOIGE.UserFields.Fields.Item("U_Ita_sysusuario").Value = clsVariablesGlobales.varCodUsuario; //Usuario del sistema umbrella varOIGE.UserFields.Fields.Item("U_Ita_sysfecha").Value = DateTime.Now.ToString("dd/MM/yyyy HH:mm"); //Fecha del sistema umbrella varOIGE.UserFields.Fields.Item("U_Ita_sysip").Value = clsVariablesGlobales.varIpMaquina; //Ip del sistema umbrella varOIGE.UserFields.Fields.Item("U_Ita_sysdocumento").Value = AnmCodigoMadre.ToString(); //Codigo interno del animal varOIGE.UserFields.Fields.Item("U_Ita_sysnumero").Value = DapSecuencia.ToString(); //Chapeta del animal //Datos de detalle de la salida de mercancia SAP varOIGE.Lines.SetCurrentLine(0); varOIGE.Lines.WarehouseCode = varCodBodega; //Almacen varOIGE.Lines.ItemCode = IteCodigo; //Código varOIGE.Lines.ItemDescription = IteNombre; //Descripción varOIGE.Lines.UserFields.Fields.Item("U_Ita_arete").Value = AnmAlternativoPadre; //Arete varOIGE.Lines.Quantity = double.Parse(DapDosis.ToString()); //Cantidad varOIGE.Lines.AccountCode = varCtaContable; //Compensación de stocks reducir cuenta //Verificamos si el item requiere lote if (IteTieLote.ToUpper().Equals("Y")) { varOIGE.Lines.BatchNumbers.SetCurrentLine(0); //Nos posicionamos en la linea del lote recien creada varOIGE.Lines.BatchNumbers.BatchNumber = DapLote; //Lote varOIGE.Lines.BatchNumbers.Quantity = double.Parse(DapDosis.ToString()); //Cantidad lote } iError = varOIGE.Add(); if (!iError.Equals(0)) { csConexionSap.objConexionSap.GetLastError(out iError, out mError); return(mError); } else { int varDocEntrySAPSalida = 0; int.TryParse(csConexionSap.objConexionSap.GetNewObjectKey().ToString(), out varDocEntrySAPSalida); varOIGE.GetByKey(varDocEntrySAPSalida); int varDocNumSAPSalida = varOIGE.DocNum; //Asignamos los valores obtenidos a los atributos de la clase DapDocEntrySalidaSAP = varDocEntrySAPSalida; DapNumeroSalidaSAP = varDocNumSAPSalida; //Actualizamos en el movimiento los datos de SAP proActMovInventarioSalida(varDocEntrySAPSalida, varDocNumSAPSalida, AnmCodigoMadre, DapSecuencia); return(mError); } } } catch (Exception e) { throw new Exception(e.Message); } finally { csAccesoDatos.proFinalizarSesionSAP(); } }