Пример #1
0
        /// <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);
        }
Пример #2
0
        //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(); }
        }