protected override async Task <bool> OnProcessingAsync(BaseEvent ev) { var @event = (ev as JournalVoucherCreatedEvent); var stream = Mapper.Map <EventStream>(@event); this._eventRepository.Add(stream); SAPbobsCOM.JournalVouchers voucher = null; try { if (@event.Entries.Count() > 0) { voucher = SapCompany.DICompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oJournalVouchers) as SAPbobsCOM.JournalVouchers; foreach (var entry in @event.Entries) { try { voucher.JournalEntries.ReferenceDate = entry.ReferenceDate; #region for test 2017-07-07 //voucher.JournalEntries.Memo = entry.Memo; // NOTE: 임시 테스트를 위해 적요에 해당 steamId를 삽입 후 추후 조회에서 처리 // TODO: 추후 유저필드 추가 후에 해당 필드로 변경필요 (추가해야할 UDF: StreamId, ApiUserId, ClientId) // ApiUser 와 ClientId를 받을 필요가 있음. request 에서 부터 전달되어야 함. voucher.JournalEntries.Memo = @event.EventStream.ToString(); //voucher.JournalEntries.UserFields.Fields.Item("U_StreamId").Value = @event.EventStream.ToString(); //voucher.JournalEntries.UserFields.Fields.Item("U_ApiUserName").Value = ""; //voucher.JournalEntries.UserFields.Fields.Item("U_ClientId").Value = ""; #endregion voucher.JournalEntries.DueDate = entry.DueDate; foreach (var entryLine in entry.Lines) { voucher.JournalEntries.Lines.AccountCode = entryLine.AccountCode; voucher.JournalEntries.Lines.Debit = Convert.ToDouble(entryLine.Debit); voucher.JournalEntries.Lines.Credit = Convert.ToDouble(entryLine.Credit); voucher.JournalEntries.Lines.DueDate = entryLine.DueDate; voucher.JournalEntries.Lines.ShortName = entryLine.ShortName; voucher.JournalEntries.Lines.LineMemo = entryLine.LineMemo; voucher.JournalEntries.Lines.BaseSum = Convert.ToDouble(entryLine.BaseSum); // TODO: 유저필드 셋팅 voucher.JournalEntries.Lines.Add(); } } catch (Exception ex) { sapHowmuchLogger.Error($"One or more Journal Entry is not valid"); throw ex; } var entryResult = voucher.JournalEntries.Add(); if (entryResult != 0) { sapHowmuchLogger.Error("전표 추가 에러"); // TODO: 예외 처리 조정 throw new Exception($"SBO Error Code: {SapCompany.DICompany.GetLastErrorCode()}, Error Description: {SapCompany.DICompany.GetLastErrorDescription()}"); } } } int result = voucher.Add(); if (result != 0) { sapHowmuchLogger.Error("분개장 추가 에러"); // TODO: 예외 처리 조정 throw new Exception($"SBO Error Code: {SapCompany.DICompany.GetLastErrorCode()}, Error Description: {SapCompany.DICompany.GetLastErrorDescription()}"); } // NOTE: xml 파일로 저장하더라도, 실제적으로 해당 분개장 번호는 리턴되지 않음 // streamId 를 특정 컬럼에 저장한다음 // 추후 그 streamId로 조회해서 키값을 얻어와야 할 것으로 보임 // 이 작업은 controller 단에서 처리하는 방향으로 결정 //@event.VoucherListNumber = 0; } catch (Exception ex) { if (voucher != null) { ComObjectHelper.ReleaseComObject(voucher); } sapHowmuchLogger.Error($"Journal vourcher create failed: {ex.Message}"); throw ex; } return(await Task.FromResult(true)); }
public string funEnviarDocPreliminarSAP() { try { string mError = ""; int iError = 0; int i = 0; csAccesoDatos.proIniciarSesionSAP(); DataTable objDtVerificarSAP = funVerificarDocPreliminarSAP(DocNombre, CabNumero); if (objDtVerificarSAP.Rows.Count > 0) { //Actualizacion en el formulario de movimientos de inventario int DocEntrySAPDiario = int.Parse(objDtVerificarSAP.Rows[0]["TransId"].ToString()); int NumeroSAPDiario = int.Parse(objDtVerificarSAP.Rows[0]["BatchNum"].ToString()); csAccesoDatos.funIniciarSesion("conDBUmbrella"); csAccesoDatos.GDatos.funEjecutarSql(string.Format("Update FIN_CABDOCPRELIMINAR Set CabSap = {0}, EstCodigo = 'Sap' Where DocCodigo = {1} and CabNumero = {2}", DocEntrySAPDiario, DocCodigo, CabNumero)); csAccesoDatos.proFinalizarSesion(); return(mError); } else { SAPbobsCOM.JournalVouchers varOBTF = csConexionSap.objConexionSap.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oJournalVouchers); varOBTF.JournalEntries.ReferenceDate = (DateTime)CabFecha; varOBTF.JournalEntries.DueDate = (DateTime)CabFecha; varOBTF.JournalEntries.TaxDate = (DateTime)CabFecha; varOBTF.JournalEntries.Memo = CabComentario; varOBTF.JournalEntries.Reference = CabReferencia1; varOBTF.JournalEntries.Reference2 = CabReferencia2; varOBTF.JournalEntries.Reference3 = DocNombre + " - " + CabNumero.ToString(); varOBTF.JournalEntries.UserFields.Fields.Item("U_Ita_sysusuario").Value = clsVariablesGlobales.varCodUsuario; varOBTF.JournalEntries.UserFields.Fields.Item("U_Ita_sysfecha").Value = DateTime.Now.ToString("dd/MM/yyyy HH:mm"); varOBTF.JournalEntries.UserFields.Fields.Item("U_Ita_sysip").Value = clsVariablesGlobales.varIpMaquina; varOBTF.JournalEntries.UserFields.Fields.Item("U_Ita_sysdocumento").Value = DocNombre; varOBTF.JournalEntries.UserFields.Fields.Item("U_Ita_sysnumero").Value = CabNumero.ToString(); //Recuperamos informacion de los detalles del movimiento List <clsFinDocPreliminarDet> objDetalle = new List <clsFinDocPreliminarDet>(); clsFinDocPreliminarDet.proListar(CabCodigo, out objDetalle); foreach (clsFinDocPreliminarDet objFilaDetalle in objDetalle) { if (!i.Equals(0)) { varOBTF.JournalEntries.Lines.Add(); } varOBTF.JournalEntries.Lines.SetCurrentLine(i); i++; varOBTF.JournalEntries.Lines.AccountCode = objFilaDetalle.CueCodigo; varOBTF.JournalEntries.Lines.Debit = double.Parse(objFilaDetalle.DetDebe.ToString()); varOBTF.JournalEntries.Lines.Credit = double.Parse(objFilaDetalle.DetHaber.ToString()); varOBTF.JournalEntries.Lines.LineMemo = objFilaDetalle.DetComentario; varOBTF.JournalEntries.Lines.Reference1 = objFilaDetalle.DetReferencia1; varOBTF.JournalEntries.Lines.Reference2 = objFilaDetalle.DetReferencia2; varOBTF.JournalEntries.Lines.ReferenceDate2 = CabFecha; varOBTF.JournalEntries.Lines.CostingCode = objFilaDetalle.CcoCodigo.Equals("") ? "" : objFilaDetalle.CcoCodigo.ToString().Substring(0, 2); varOBTF.JournalEntries.Lines.CostingCode2 = objFilaDetalle.CcoCodigo.ToString().Equals("") ? "" : objFilaDetalle.CcoCodigo.ToString().Substring(0, 3); varOBTF.JournalEntries.Lines.CostingCode3 = objFilaDetalle.CcoCodigo.ToString().Equals("") ? "" : objFilaDetalle.CcoCodigo.ToString().Substring(0, 4); varOBTF.JournalEntries.Lines.TaxDate = CabFecha; varOBTF.JournalEntries.Lines.DueDate = CabFecha; } iError = varOBTF.Add(); if (!iError.Equals(0)) { csConexionSap.objConexionSap.GetLastError(out iError, out mError); return(mError); } else { int varCabEntrySap = 0; int.TryParse(csConexionSap.objConexionSap.GetNewObjectKey().ToString(), out varCabEntrySap); csAccesoDatos.funIniciarSesion("conDBUmbrella"); csAccesoDatos.GDatos.funEjecutarSql(string.Format("Update FIN_CABDOCPRELIMINAR Set CabSap = {0}, EstCodigo = 'Sap' Where DocCodigo = {1} and CabNumero = {2}", varCabEntrySap, DocCodigo, CabNumero)); csAccesoDatos.proFinalizarSesion(); } return(mError); } } catch (Exception) { throw; } finally { csAccesoDatos.proFinalizarSesionSAP(); } }
public static void JV(DateTime dtRefDate, DateTime dtTaxDate, DateTime dtDueDate, String strBG_Dr_LT_AccCode, double dBG_Dr_LT_Value, String strBG_Dr_OEM_AccCode, double dBG_Dr_OEM_Value, String strBG_Cr_LT_AccCode, double dBG_Cr_LT_Value, String strBG_Cr_OEM_AccCode, double dBG_Cr_OEM_Value, String strCP_Dr_LT_AccCode, double dCP_Dr_LT_Value, String strCP_Dr_OEM_AccCode, double dCP_Dr_OEM_Value, String strCP_Cr_LT_AccCode, double dCP_Cr_LT_Value, String strCP_Cr_OEM_AccCode, double dCP_Cr_OEM_Value, out string errorMessage) { try { errorMessage = ""; SAPbobsCOM.JournalVouchers oJV = default(SAPbobsCOM.JournalVouchers); oJV = Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oJournalVouchers); oJV.JournalEntries.ReferenceDate = dtRefDate; oJV.JournalEntries.TaxDate = dtTaxDate; oJV.JournalEntries.DueDate = dtDueDate; oJV.JournalEntries.Lines.SetCurrentLine(0); //Budget oJV.JournalEntries.Lines.AccountCode = strBG_Dr_LT_AccCode; oJV.JournalEntries.Lines.Debit = dBG_Dr_LT_Value; oJV.JournalEntries.Lines.Add(); oJV.JournalEntries.Lines.AccountCode = strBG_Dr_OEM_AccCode; oJV.JournalEntries.Lines.Debit = dBG_Dr_OEM_Value; oJV.JournalEntries.Lines.Add(); oJV.JournalEntries.Lines.AccountCode = strBG_Cr_LT_AccCode; oJV.JournalEntries.Lines.Credit = dBG_Cr_LT_Value; oJV.JournalEntries.Lines.Add(); oJV.JournalEntries.Lines.AccountCode = strBG_Cr_OEM_AccCode; oJV.JournalEntries.Lines.Credit = dBG_Cr_OEM_Value; oJV.JournalEntries.Lines.Add(); //Capacity Idle Variance oJV.JournalEntries.Lines.AccountCode = strCP_Dr_LT_AccCode; oJV.JournalEntries.Lines.Debit = dCP_Dr_LT_Value; oJV.JournalEntries.Lines.Add(); oJV.JournalEntries.Lines.AccountCode = strCP_Dr_OEM_AccCode; oJV.JournalEntries.Lines.Debit = dCP_Dr_OEM_Value; oJV.JournalEntries.Lines.Add(); oJV.JournalEntries.Lines.AccountCode = strCP_Cr_LT_AccCode; oJV.JournalEntries.Lines.Credit = dCP_Cr_LT_Value; oJV.JournalEntries.Lines.Add(); oJV.JournalEntries.Lines.AccountCode = strCP_Cr_OEM_AccCode; oJV.JournalEntries.Lines.Credit = dCP_Cr_OEM_Value; oJV.JournalEntries.Lines.Add(); int RetVal = oJV.Add(); if (RetVal != 0) { Company.GetLastError(out RetVal, out errorMessage); } } catch (Exception) { throw; } }