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