示例#1
0
        public override string Export(int batchNo)
        {
            var result = ExportProcess(batchNo);

            SettingsModelList.SetUpdateDate("LastARInvoicesSyncDate", DateTime.Now);
            return(result);
        }
示例#2
0
        public BaseController()
        {
            Model = Init();

            Model.ApplicationPath = ConfigurationManager.AppSettings["ApplicationPath"];

            Model.Workbench = new WorkbenchModel
            {
                Connected     = EchoClient.Current.Success,
                LastHeartBeat = EchoClient.Current.LastHeartBeat ?? DateTime.MinValue
            };

            Model.Sap = new SapModel
            {
                Connected = ServerConnection.Current.Connected,
                //CompanyName = ServerConnection.Current.GetCompany().CompanyName,
                Message = ServerConnection.Current.Connected ?
                          "Workbench  is connected to Business One " + ServerConnection.Current.GetCompany().CompanyName
                            : "Error " + ServerConnection.Current.GetErrorCode() + ": " + ServerConnection.Current.GetErrorMessage()
            };

            Model.LastCompanieSyncDate    = SettingsModelList.GetUpdateDate("LastCompanieSyncDate").ToString("yyyy-MM-ddThh:mm");
            Model.LastPaymentSyncDate     = SettingsModelList.GetUpdateDate("LastPaymentSyncDate").ToString("yyyy-MM-ddThh:mm");
            Model.LastJobReceiptsSyncDate = SettingsModelList.GetUpdateDate("LastJobReceiptsSyncDate").ToString("yyyy-MM-ddThh:mm");
            Model.LastAPInvoiceSyncDate   = SettingsModelList.GetUpdateDate("LastAPInvoiceSyncDate").ToString("yyyy-MM-ddThh:mm");
            Model.LastJobSyncDate         = SettingsModelList.GetUpdateDate("LastJobSyncDate").ToString("yyyy-MM-ddThh:mm");
            this.RequiresAuthentication();
        }
示例#3
0
        public string Export(int batchNo, string wbSessionId)
        {
            this.wbSessionId = wbSessionId;
            var result = ExportProcess(batchNo);

            SettingsModelList.SetUpdateDate("LastARInvoicesSyncDate", DateTime.Now);
            return(result);
        }
        public override string Import()
        {
            var lastUpdateDate = SettingsModelList.GetUpdateDate("LastExchangeRatesSyncDate");
            var result         = ImportProcess(sapCompany);

            SettingsModelList.SetUpdateDate("LastExchangeRatesSyncDate", DateTime.Now);
            return(result);
        }
示例#5
0
        public override string Export()
        {
            var lastUpdateDate = SettingsModelList.GetUpdateDate("LastJobSyncDate");
            var result         = ExportProcess(lastUpdateDate);

            SettingsModelList.SetUpdateDate("LastJobSyncDate", DateTime.Now);
            return(result);
        }
        public void SaveFinCocode()
        {
            var httpClient = new HttpClient()
            {
                BaseAddress = new Uri(ConfigurationManager.AppSettings["WorkbenchUrl"])
            };

            httpClient.DefaultRequestHeaders.Authorization = !string.IsNullOrEmpty(ConfigurationManager.AppSettings["WorkbenchApiKey"]) ?
                                                             new AuthenticationHeaderValue("Bearer ", ConfigurationManager.AppSettings["WorkbenchApiKey"]) :
                                                             new AuthenticationHeaderValue("Basic", (ConfigurationManager.AppSettings["WorkbenchUserName"] + ":" + ConfigurationManager.AppSettings["WorkbenchPassword"].FromBase64()).ToBase64());


            var wbClient = new Client(httpClient);
            var request  = new TableApiRequest()
            {
                TableName     = "FinancialCompanies",
                ColumnNames   = "CompanyCode",
                PredicateRows = new List <DynamicPredicateRowApi>
                {
                    new DynamicPredicateRowApi
                    {
                        Display      = true,
                        LeftOperand  = "Description",
                        Operator     = DynamicPredicateRowApiOperator.Eq,
                        RightOperand = new List <string> {
                            ServerConnection.Current.GetCompany().CompanyName
                        }
                    }
                },
                Page = 1,
                Rows = 1
            };

            var result = wbClient.TableApi_PostAsync(request);
            var finCo  = "";

            if (result.Result.Rows.Count() != 0)
            {
                finCo = result.Result.Rows.FirstOrDefault().Key.KeyValue;
            }

            SettingsModelList.SetFinCoCode(finCo);
        }
        public string ProcessBatch(string message)
        {
            var exportString = message.Split(':');
            var batchList    = exportString[0];

            sessionId = exportString[1];
            var exportUserId = exportString[2];

            batches = batchList.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            try
            {
                var finCoCode        = exportString[3];
                var settingFinCoCode = SettingsModelList.GetFinCoCode();
                if (settingFinCoCode != finCoCode)
                {
                    Helpers.LogAppError($"Invalid FinCoCode settings:{settingFinCoCode}, singalR: {finCoCode}");
                    batchList = "0";
                    return("Invalid FinCo");
                }

                foreach (var batch in batches)
                {
                    var batchNo = Convert.ToInt32(batch);
                    type = exportAPInvoices.GetBatchType(batchNo);
                    var result = "";

                    if (type == "ApInvoice" || type == "ApCredit" || type == "SubClaim")
                    {
                        result = exportAPInvoices.Export(batchNo, sessionId);
                    }

                    if (type == "ArInvoice" || type == "ArCredit")
                    {
                        result = exportARInvoices.Export(batchNo, sessionId);
                    }

                    if (type == "Adjustment" || type == "WipAccrual" || type == "CccAccrual" || type == "PoAccrual")
                    {
                        result = exportGLJournals.Export(batchNo, sessionId);
                    }

                    if (type == "Disbursement" || type == "PlantIssue" || type == "Docket" || type == "Timesheet")
                    {
                        result = exportGLJournals.Export(batchNo, sessionId);
                    }

                    if (type == "StockReturn" || type == "StockIssue" || type == "StockTrf" || type == "StockAdjust")
                    {
                        result = exportGLJournals.Export(batchNo, sessionId);
                    }

                    if (result == "")
                    {
                        Helpers.LogAppError($"Batch type \"{type}\" is not supported yet");
                        var wbTrfClient = new WorkbenchTrfClient(new HttpClient());
                        _ = wbTrfClient.LogTrfApi_Post2Async(batchNo, exportId: null, exportTable: null, Type2.Error, $"Batch type \"{type}\" is not supported yet").Result;
                        _ = wbTrfClient.LogTrfApi_PostAsync(sessionId, "Export log marked as error", batchNo, Type.Error).Result;
                    }

                    Helpers.LogInfo($"type: {type}, result: {result}");
                }
                return("success");
            }
            catch (Exception ex)
            {
                foreach (var batch in batches)
                {
                    var wbTrfClient = new WorkbenchTrfClient(new HttpClient());
                    var batchNo     = Convert.ToInt32(batch);
                    type = exportAPInvoices.GetBatchType(batchNo);

                    if (type == "ApInvoice" || type == "ApCredit")
                    {
                        var apiResult  = wbTrfClient.APInvoiceTrfApi_GetAsync(batchNo);
                        var apInvoices = apiResult.Result;
                        exportTable = "APInvoices";
                        foreach (var invoice in apInvoices)
                        {
                            _ = wbTrfClient.LogTrfApi_Post2Async(batchNo, invoice.ID.Value, exportTable, Type2.Error, $"Error exporting batch {ex.Message}").Result;
                        }
                        _ = wbTrfClient.LogTrfApi_PostAsync(sessionId, "Export log marked as error", batchNo, Type.Error).Result;
                    }
                    if (type == "ArInvoice" || type == "ArCredit")
                    {
                        var apiResult  = wbTrfClient.ARInvoiceTrfApi_GetAsync(batchNo);
                        var arInvoices = apiResult.Result;
                        exportTable = "ARInvoices";
                        foreach (var invoice in arInvoices)
                        {
                            _ = wbTrfClient.LogTrfApi_Post2Async(batchNo, invoice.ID.Value, exportTable, Type2.Error, $"Error exporting batch {ex.Message}").Result;
                        }
                        _ = wbTrfClient.LogTrfApi_PostAsync(sessionId, "Export log marked as error", batchNo, Type.Error).Result;
                    }
                    if (type == "Adjustment" || type == "WipAccrual" || type == "CccAccrual" || type == "PoAccrual")
                    {
                        exportTable = "GLJournals";
                        _           = wbTrfClient.LogTrfApi_Post2Async(batchNo, batchNo, exportTable, Type2.Error, $"Error exporting batch {ex.Message}").Result;
                    }

                    if (type == "Disbursement" || type == "PlantIssue" || type == "Docket" || type == "Timesheet")
                    {
                        exportTable = "GLJournals";
                        _           = wbTrfClient.LogTrfApi_Post2Async(batchNo, batchNo, exportTable, Type2.Error, $"Error exporting batch {ex.Message}").Result;
                    }

                    if (type == "StockReturn" || type == "StockIssue" || type == "StockTrf" || type == "StockAdjust")
                    {
                        exportTable = "GLJournals";
                        _           = wbTrfClient.LogTrfApi_Post2Async(batchNo, batchNo, exportTable, Type2.Error, $"Error exporting batch {ex.Message}").Result;
                    }
                }

                Helpers.LogAppError($"catch {ex.InnerException.Message}");
                _ = exportAPInvoices.wbTrfclient.BatchTrfApi_PostAsync(batchList, Convert.ToInt32(exportUserId)).Result;
            }
            finally
            {
                Helpers.LogInfo($"finally {batchList}");
                _ = exportAPInvoices.wbTrfclient.BatchTrfApi_PostAsync(batchList, Convert.ToInt32(exportUserId)).Result;
            }

            Helpers.LogInfo($"exit {batchList}");
            _ = exportAPInvoices.wbTrfclient.BatchTrfApi_PostAsync(batchList, Convert.ToInt32(exportUserId)).Result;
            return("exit");
        }
示例#8
0
        public MainController(ImportCompanies importCompanies,
                              ImportPayments importPayments,
                              ImportJobReceipts importJobReceipts,
                              ExportJobs exportJobs,
                              ImportExchangeRates importExchangeRates,
                              ExportGLJournals exportGLJournals,
                              ExportAPInvoices exportAPInvoices,
                              ExportARInvoices exportARInvoices)
        {
            Get("/", args => View["Index.html", Model]);

            #region Imports

            Post("/SyncCompanies", args =>
            {
                Helpers.LogInfo($"Start Sync Companies");
                var result = importCompanies.Import();
                return(Response.AsJson(new { message = $"Companies have been imported \r\n{result}" }));
            });

            Post("/SyncPayments", args =>
            {
                Helpers.LogInfo($"Start Sync Payments");
                var result = importPayments.Import();
                return(Response.AsJson(new { message = $"Payments have been imported \r\n{result}" }));
            });

            Post("/SyncJobReceipts", args =>
            {
                Helpers.LogInfo($"Start Sync Job Receipts");
                var result = importJobReceipts.Import();
                return(Response.AsJson(new { message = $"JobReceipts have been imported \r\n{result}" }));
            });

            Post("/UpdateTime", args =>
            {
                var type = this.Request.Form["type"];
                var date = this.Request.Form["val"];
                SettingsModelList.SetUpdateDate(type, date);

                return(Response.AsJson(new { message = $"{type} updated" }));
            });

            Post("/SyncExchangeRates", args =>
            {
                Helpers.LogInfo($"Start Sync Exchange Rates");
                var result = importExchangeRates.Import();

                return(Response.AsJson(new { message = $"Exchange Rates synced" }));
            });

            #endregion

            #region Exports

            Post("/SyncJobs", args =>
            {
                Helpers.LogInfo($"Start Sync Jobs");
                var result = exportJobs.Export();
                return(Response.AsJson(new { message = $"Jobs have been exported \r\n{result}" }));
            });

            Post("/SyncGLJournals", args =>
            {
                int batchNo = Request.Form["batchNo"];
                var result  = exportGLJournals.Export(batchNo);
                return(Response.AsJson(new { message = $"GLJournals have been exported \r\n{result}" }));
            });

            Post("/SyncAPInvoices", args =>
            {
                int batchNo = Request.Form["batchNo"];
                var result  = exportAPInvoices.Export(batchNo);
                return(Response.AsJson(new { message = $"APInvoices have been exported \r\n{result}" }));
            });

            Post("/SyncARInvoices", args =>
            {
                int batchNo = Request.Form["batchNo"];
                var result  = exportARInvoices.Export(batchNo);
                return(Response.AsJson(new { message = $"APInvoices have been exported \r\n{result}" }));
            });

            #endregion
        }