/// <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(); } }
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); } }
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); }