public override string Export(int batchNo) { var result = ExportProcess(batchNo); SettingsModelList.SetUpdateDate("LastARInvoicesSyncDate", DateTime.Now); return(result); }
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(); }
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); }
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"); }
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 }