Exemplo n.º 1
0
        /// <summary>
        /// Funcion utilizada para mandar a SAP la información del diario contable
        /// </summary>
        /// <returns></returns>
        public string funEnviarDiarioSAP()
        {
            try {
                string mError = "";
                int    iError = 0;
                //Realizamos la conexion a SAP
                csAccesoDatos.proIniciarSesionSAP();
                //Verificamos si el documento ya se encuentra en SAP
                DataTable dtDiarioSAP = funVerificarDiarioSAP(DocNombre, CabNumero);
                //Si el documento se encuentra en SAP actualizamos la información de este en la informacion del animal
                if (dtDiarioSAP.Rows.Count > 0)
                {
                    //Recuperamos en las variables los valores de SAP
                    CabDocEntrySAPDiario = int.Parse(dtDiarioSAP.Rows[0]["TransId"].ToString());
                    CabNumeroSAPDiario   = int.Parse(dtDiarioSAP.Rows[0]["Number"].ToString());
                    //Actualizamos en el movimiento los datos de SAP
                    proActDiario(CabDocEntrySAPDiario, CabNumeroSAPDiario, CabCodigo);
                    //Actualizamos  las lineas del detalle de actualizacion de costos
                    clsGraCstAcumulado.proActualizarCstAcumulado(AnmCodigo, CabFecha, "Bla", "GRA_DETLABORATORIO", "LABORATORIO", CabCodigo);
                    //Actualizamos  las lineas del detalle de actualizacion de costos standares
                    clsGraCstStdAcumulado.proActualizarCstStdAcumulado(AnmCodigo, CabFecha, "Bla", CabCodigo);
                    return(mError);
                }
                else
                {
                    //Variable utilizadas para las cuentas contables parametrizadas
                    string varCodCtaContableWip        = clsGenOpciones.CargarValor("G.Lab.Diario.CtaWip");        //Recuperamos el codigo de la cuenta contable para el costo inicial
                    string varCodCtaContableCstInicial = clsGenOpciones.CargarValor("G.Lab.Diario.CtaCstInicial"); //Recuperamos el codigo de la cuenta contable WIP
                    //Instanciamos en la variable varOJDT el objeto de SAP de diarios contables
                    SAPbobsCOM.JournalEntries varOJDT = csConexionSap.objConexionSap.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oJournalEntries);

                    //Cargamos informacion de la cabecera del diario contable
                    varOJDT.Series        = clsSegDocumento.funRecNumSerieSAPDiario(DocCodigo);
                    varOJDT.ReferenceDate = CabFecha;
                    varOJDT.DueDate       = CabFecha;
                    varOJDT.TaxDate       = CabFecha;
                    varOJDT.Memo          = string.Format("Diario de laboratorio: {0}-{1} {2}", DocNombre, CabNumero, CabComenDiario);
                    varOJDT.Reference3    = DocNombre + "-" + CabNumero;
                    varOJDT.UserFields.Fields.Item("U_Ita_sysusuario").Value   = clsVariablesGlobales.varCodUsuario;
                    varOJDT.UserFields.Fields.Item("U_Ita_sysfecha").Value     = DateTime.Now.ToString("dd/MM/yyyy HH:mm");
                    varOJDT.UserFields.Fields.Item("U_Ita_sysip").Value        = clsVariablesGlobales.varIpMaquina;
                    varOJDT.UserFields.Fields.Item("U_Ita_sysdocumento").Value = DocNombre;
                    varOJDT.UserFields.Fields.Item("U_Ita_sysnumero").Value    = CabNumero.ToString();

                    //Cargamos informacion de los detalles del diario contable
                    decimal varCstTotal = 0;
                    int     i           = 0;
                    //Recuperamos la informacion del costo inicial
                    varOJDT.Lines.SetCurrentLine(i);
                    varOJDT.Lines.AccountCode    = varCodCtaContableCstInicial;
                    varOJDT.Lines.Debit          = 0;
                    varOJDT.Lines.Credit         = double.Parse(CabCstInicial.ToString());
                    varOJDT.Lines.LineMemo       = string.Format("Diario de laboratorio: {0}-{1} {2}", DocNombre, CabNumero, CabComenDiario);
                    varOJDT.Lines.Reference1     = "DEPRECIACION";
                    varOJDT.Lines.Reference2     = "";
                    varOJDT.Lines.ReferenceDate2 = CabFecha;
                    varOJDT.Lines.TaxDate        = CabFecha;
                    varOJDT.Lines.DueDate        = CabFecha;
                    varCstTotal += CabCstInicial;
                    i++;
                    //Recuperamos la informacion del costo acumulado
                    foreach (DataRow drFilaDetalle in clsGraCstAcumulado.funRecTableCstAcumulado(AnmCodigo, CabFecha, "Bla").Rows)
                    {
                        varOJDT.Lines.Add();
                        varOJDT.Lines.SetCurrentLine(i);
                        varOJDT.Lines.AccountCode    = drFilaDetalle["CsaCtaCodigo"].ToString();
                        varOJDT.Lines.Debit          = 0;
                        varOJDT.Lines.Credit         = double.Parse(drFilaDetalle["CsaValor"].ToString());
                        varOJDT.Lines.LineMemo       = string.Format("Diario de laboratorio: {0}-{1} {2}", DocNombre, CabNumero, CabComenDiario);
                        varOJDT.Lines.Reference1     = drFilaDetalle["CsaTipoSalida"].ToString();
                        varOJDT.Lines.Reference2     = "";
                        varOJDT.Lines.ReferenceDate2 = CabFecha;
                        varOJDT.Lines.TaxDate        = CabFecha;
                        varOJDT.Lines.DueDate        = CabFecha;
                        varCstTotal += decimal.Parse(drFilaDetalle["CsaValor"].ToString());
                        i++;
                    }
                    //Recuperamos la informacion del costo standar acumulado
                    foreach (DataRow drFilaDetalle in clsGraCstStdAcumulado.funRecTableCstStdAcumulado(AnmCodigo, CabFecha, "Bla").Rows)
                    {
                        varOJDT.Lines.Add();
                        varOJDT.Lines.SetCurrentLine(i);
                        varOJDT.Lines.AccountCode    = drFilaDetalle["CdaCtaContableSalida"].ToString();
                        varOJDT.Lines.Debit          = 0;
                        varOJDT.Lines.Credit         = double.Parse(drFilaDetalle["CdaValor"].ToString());
                        varOJDT.Lines.LineMemo       = string.Format("Diario de laboratorio: {0}-{1} {2}", DocNombre, CabNumero, CabComenDiario);
                        varOJDT.Lines.Reference1     = drFilaDetalle["CdaDetComentario"].ToString();
                        varOJDT.Lines.Reference2     = "";
                        varOJDT.Lines.ReferenceDate2 = CabFecha;
                        varOJDT.Lines.TaxDate        = CabFecha;
                        varOJDT.Lines.DueDate        = CabFecha;
                        varCstTotal += decimal.Parse(drFilaDetalle["CdaValor"].ToString());
                        i++;
                    }
                    //Informacion del haber
                    varOJDT.Lines.Add();
                    varOJDT.Lines.SetCurrentLine(i);
                    varOJDT.Lines.AccountCode    = varCodCtaContableWip;
                    varOJDT.Lines.Debit          = double.Parse(varCstTotal.ToString());
                    varOJDT.Lines.Credit         = 0;
                    varOJDT.Lines.LineMemo       = string.Format("Diario de laboratorio: {0}-{1} {2}", DocNombre, CabNumero, CabComenDiario);
                    varOJDT.Lines.Reference1     = "";
                    varOJDT.Lines.Reference2     = "";
                    varOJDT.Lines.ReferenceDate2 = CabFecha;
                    varOJDT.Lines.TaxDate        = CabFecha;
                    varOJDT.Lines.DueDate        = CabFecha;

                    iError = varOJDT.Add();
                    if (!iError.Equals(0))
                    {
                        csConexionSap.objConexionSap.GetLastError(out iError, out mError);
                        return(mError);
                    }
                    else
                    {
                        int varDocEntrySAPDiario = 0;
                        int.TryParse(csConexionSap.objConexionSap.GetNewObjectKey().ToString(), out varDocEntrySAPDiario);
                        varOJDT.GetByKey(varDocEntrySAPDiario);
                        int varDocNumSAPDiario = varOJDT.Number;

                        //Actualizamos la linea del detalle con la informacion de SAP de la salida de mercancias en la tabla de detalle de actualizacion de costos de formulacion
                        proActDiario(varDocEntrySAPDiario, varDocNumSAPDiario, CabCodigo);
                        //Actualizamos  las lineas del detalle de actualizacion de costos
                        clsGraCstAcumulado.proActualizarCstAcumulado(AnmCodigo, CabFecha, "Bla", "GRA_DETLABORATORIO", "LABORATORIO", CabCodigo);
                        //Actualizamos  las lineas del detalle de actualizacion de costos standares
                        clsGraCstStdAcumulado.proActualizarCstStdAcumulado(AnmCodigo, CabFecha, "Bla", CabCodigo);
                        return(mError);
                    }
                }
            }
            catch (Exception e) { throw new Exception(e.Message); }
            finally { csAccesoDatos.proFinalizarSesionSAP(); }
        }
Exemplo n.º 2
0
        private void btnCarga_ClickBefore(object sboObject, SAPbouiCOM.SBOItemEventArg pVal, out bool BubbleEvent)
        {
            BubbleEvent   = true;
            mListObjLogin = new List <LoginDTO>();
            AccountsDAO lObjAccounts  = null;
            string      lStrCtaPuente = "";

            bool lBolResult = Check_txts();

            if (lBolResult && gLstNomina.Count > 0)
            {
                //Tipo de Cambio USD
                if (!CheckCurrencyRate())
                {
                    Application.SBO_Application.StatusBar.SetText("Proceso Cancelado. Actualice el tipo de cambio USD.", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                    return;
                }
                try
                {
                    this.UIAPIRawForm.Freeze(true);
                    mObjJournalEntries = (SAPbobsCOM.JournalEntries)DIApplication.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oJournalEntries);

                    mListObjLogin = GetSetupLogin();
                    LoginDTO lObjLoginDTO = mListObjLogin.FirstOrDefault(x => x.Code == int.Parse(lStrValueCmb));

                    lStrCtaPuente = lObjLoginDTO.AccountingAccount;

                    if (lObjLoginDTO != null)
                    {
                        //Existe Cuentas
                        string lStrResult = string.Empty;
                        string lStrYear   = txtYear.Value;
                        string lStrPeriod = cmbPeriod.Value;
                        string lStrNo     = txtNo.Value;

                        Application.SBO_Application.StatusBar.SetText("Procesando cuentas contables... Porfavor espere", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);

                        lObjAccounts = new AccountsDAO();

                        var lVarGroupAcc = from p in gLstNomina group p by p.CUENTA into grouped select grouped;

                        lStrResult = lObjAccounts.CheckAccounts(lVarGroupAcc);

                        if (lStrResult != string.Empty)
                        {
                            Application.SBO_Application.StatusBar.SetText("Proceso Cancelado. Actualice las cuentas." + lStrResult, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                            return;
                        }

                        Application.SBO_Application.StatusBar.SetText("Procesando centros de costos... Porfavor espere", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);

                        //Existe Centro de Costos
                        lStrResult   = string.Empty;
                        lObjAccounts = new AccountsDAO();

                        var lVarGpCC = from p in gLstNomina group p by p.CUENTA2 into grouped select grouped;

                        lStrResult = lObjAccounts.CheckCostingCode(lVarGpCC);

                        if (lStrResult != string.Empty)
                        {
                            Application.SBO_Application.StatusBar.SetText("Proceso Cancelado. Actualice los Centros de Costo." + lStrResult, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                            return;
                        }

                        mDoubleImpoDedu = 0.0;
                        mDoubleImpoPerc = 0.0;

                        //Obtener Clave de SAP en empleados
                        List <EmployeesDTO> lLstEmployeesDTO = mObjEmployeesDAO.GetEmployeeID();

                        var lObjQuery = from nom in gLstNomina
                                        join emp in lLstEmployeesDTO
                                        on nom.ATRAB equals emp.IdEmpSAP
                                        select new { nom, emp };

                        List <string> lLstMissingEmp = new List <string>();
                        foreach (var lObjQItem in lObjQuery)
                        {
                            if (lObjQItem.emp.IdEmpNomina == null)
                            {
                                lLstMissingEmp.Add(lObjQItem.emp.FullName);
                            }

                            lObjQItem.nom.ATRAB = (int?)lObjQItem.emp.IdEmpNomina;
                        }

                        if (lLstMissingEmp.Count > 0)
                        {
                            string lStrMissingEmp = string.Empty;
                            foreach (var lObjEmpItem in lLstMissingEmp.Distinct().ToList())
                            {
                                lStrMissingEmp += lObjEmpItem + ", ";
                            }

                            Application.SBO_Application.MessageBox("Para continuar, registre en SAP los siguientes empleados: " + lStrMissingEmp);
                            NewSearch();

                            return;
                        }

                        mObjJournalEntries = PopulateJournalEntries();                                       //encabezado
                        mObjJournalEntries = PopulateDetails(mObjJournalEntries, gLstNomina, lStrCtaPuente); //lineas

                        int lIntRespJournal = mObjJournalEntries.Add();
                        if (lIntRespJournal == 0)
                        {
                            NewSearch();
                            Application.SBO_Application.MessageBox("Proceso terminado. Se cargo con exito el asiento contable");
                            Application.SBO_Application.StatusBar.SetText("Proceso terminado. Se cargo con exito el asiento contable", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                        }
                        else
                        {
                            int    lIntError = 0;
                            string lStrError = string.Empty;
                            string xdxd      = DIApplication.Company.GetLastErrorDescription();
                            DIApplication.Company.GetLastError(out lIntError, out lStrError);

                            Application.SBO_Application.StatusBar.SetText("Proceso Cancelado. Error al cargar el asiento contable " + lStrError, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                        }
                    }
                    else
                    {
                        Application.SBO_Application.StatusBar.SetText("No se puedo establecer la conexión con el Servidor de Nómina", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
                    }
                }
                catch (Exception ex)
                {
                    Application.SBO_Application.StatusBar.SetText(ex.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                }
                finally
                {
                    this.UIAPIRawForm.Freeze(false);
                    MemoryUtility.ReleaseComObject(mObjJournalEntries);

                    //btnCarga.Item.Enabled = false;
                }
            }
            else
            {
                Application.SBO_Application.StatusBar.SetText("No hay datos a importar. Favor de primero Buscar Nómina", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
            }
        }
Exemplo n.º 3
0
        public string postJe()
        {
            long   jdtNum  = 0;
            int    errnum  = 0;
            string errDesc = "";
            string outStr  = "";

            if (!chkPost.Checked)
            {
                Program.objHrmsUI.oApplication.SetStatusBarMessage("You need to check the approved box before posting");
                return("Error");
            }
            if (txDN.Value == "")
            {
                Program.objHrmsUI.oApplication.SetStatusBarMessage("Select a transaction to post!");
                return("Error");
            }
            SAPbobsCOM.JournalEntries vJE = (SAPbobsCOM.JournalEntries)Program.objHrmsUI.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oJournalEntries);


            string   Remarks     = txRem.Value.ToString();
            DateTime postingDate = DateTime.ParseExact(txDD.Value, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);



            try
            {
                vJE.ReferenceDate = postingDate;
                vJE.TaxDate       = postingDate;
                vJE.DueDate       = postingDate;
                if (Remarks.Length > 20)
                {
                    vJE.Memo = Remarks.Substring(0, 20); // dgSales[3, i].Value.ToString().Substring(0, 20);
                }
                else
                {
                    vJE.Memo = Remarks;
                }
                vJE.Reference  = txRef1.Value;
                vJE.Reference2 = txRef2.Value;
                //   vJE.TransactionCode = "JP";
                vJE.Reference3 = "JP_" + txDN.Value.ToString();

                for (int i = 0; i < mtDet.RowCount; i++)
                {
                    string codetype = dtDet.GetValue("cType", i);
                    string acctcode = dtDet.GetValue("cCode", i);
                    string acctname = dtDet.GetValue("cName", i);
                    string debit    = Convert.ToString(dtDet.GetValue("cDebit", i));
                    string credit   = Convert.ToString(dtDet.GetValue("cCredit", i));
                    string project  = dtDet.GetValue("cProject", i);
                    string ocr1     = dtDet.GetValue("cOcr1", i);
                    string ocr2     = dtDet.GetValue("cOcr2", i);
                    string ocr3     = dtDet.GetValue("cOcr3", i);
                    string ocr4     = dtDet.GetValue("cOcr4", i);
                    string ocr5     = dtDet.GetValue("cOcr5", i);


                    if (codetype == "GL")
                    {
                        vJE.Lines.AccountCode = acctcode;
                    }
                    else
                    {
                        vJE.Lines.ShortName = acctcode;
                    }
                    vJE.Lines.Credit         = Convert.ToDouble(credit);
                    vJE.Lines.Debit          = Convert.ToDouble(debit);
                    vJE.Lines.DueDate        = postingDate;
                    vJE.Lines.ReferenceDate1 = postingDate;
                    vJE.Lines.TaxDate        = postingDate;
                    vJE.Lines.Reference1     = vJE.Reference;
                    vJE.Lines.Reference2     = vJE.Reference2;
                    vJE.Lines.ProjectCode    = project;
                    vJE.Lines.CostingCode    = ocr1;
                    vJE.Lines.CostingCode2   = ocr2;
                    vJE.Lines.CostingCode3   = ocr3;
                    vJE.Lines.CostingCode4   = ocr4;
                    vJE.Lines.CostingCode5   = ocr5;
                    vJE.Lines.Add();
                }
            }
            catch (Exception ex)
            {
                outStr = ex.Message;
            }
            if (vJE.Add() != 0)
            {
                int    erroCode = 0;
                string errDescr = "";
                Program.objHrmsUI.oCompany.GetLastError(out erroCode, out errDescr);
                outStr = "Error:" + errDescr + outStr;
                Program.objHrmsUI.oApplication.SetStatusBarMessage(outStr);
            }
            else
            {
                outStr = Convert.ToString(Program.objHrmsUI.oCompany.GetNewObjectKey());
                string strObjJe = txDN.Value.ToString();

                string strUpdate = " UPDATE \"@ABGP\" SET \"Status\" ='C' ,  \"U_Ref3\"= '" + outStr + "' WHERE \"DocNum\"='" + strObjJe + "'";

                Program.objHrmsUI.ExecQuery(strUpdate, "Updating after posting");

                Program.objHrmsUI.oApplication.SetStatusBarMessage("Journal Entry Created. JE # " + outStr, BoMessageTime.bmt_Medium, false);
                iniUI();
            }
            return(outStr);
        }