diff --git a/FA_WEB.sln b/FA_WEB.sln new file mode 100644 index 0000000..60646e3 --- /dev/null +++ b/FA_WEB.sln @@ -0,0 +1,52 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FaKrosnoApi", "FaKrosnoApi\FaKrosnoApi.csproj", "{E5027773-5627-42E0-A08F-6A241AE79075}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrdersManagement", "OrdersManagement\OrdersManagement.csproj", "{C9C87D21-E133-45BB-953F-5F42AEF369B5}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataModels", "DataModels", "{6607ACC9-71B9-4095-9A81-B6FBB0AAAF17}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FaKrosnoEfDataModel", "FaKrosnoEfDataModel\FaKrosnoEfDataModel.csproj", "{4671E3B6-4D11-4521-A927-DC3B1072FC4A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SytelineSaAppEfDataModel", "SytelineSaAppEfDataModel\SytelineSaAppEfDataModel.csproj", "{02B7F642-62C1-4BA2-87B0-0B9214319095}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FaKrosnoEfDataModelTests", "FaKrosnoEfDataModelTests\FaKrosnoEfDataModelTests.csproj", "{4D8AA0FD-6025-4D03-86B9-51CE07081D80}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E5027773-5627-42E0-A08F-6A241AE79075}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5027773-5627-42E0-A08F-6A241AE79075}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5027773-5627-42E0-A08F-6A241AE79075}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5027773-5627-42E0-A08F-6A241AE79075}.Release|Any CPU.Build.0 = Release|Any CPU + {C9C87D21-E133-45BB-953F-5F42AEF369B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9C87D21-E133-45BB-953F-5F42AEF369B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9C87D21-E133-45BB-953F-5F42AEF369B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9C87D21-E133-45BB-953F-5F42AEF369B5}.Release|Any CPU.Build.0 = Release|Any CPU + {4671E3B6-4D11-4521-A927-DC3B1072FC4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4671E3B6-4D11-4521-A927-DC3B1072FC4A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4671E3B6-4D11-4521-A927-DC3B1072FC4A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4671E3B6-4D11-4521-A927-DC3B1072FC4A}.Release|Any CPU.Build.0 = Release|Any CPU + {02B7F642-62C1-4BA2-87B0-0B9214319095}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {02B7F642-62C1-4BA2-87B0-0B9214319095}.Debug|Any CPU.Build.0 = Debug|Any CPU + {02B7F642-62C1-4BA2-87B0-0B9214319095}.Release|Any CPU.ActiveCfg = Release|Any CPU + {02B7F642-62C1-4BA2-87B0-0B9214319095}.Release|Any CPU.Build.0 = Release|Any CPU + {4D8AA0FD-6025-4D03-86B9-51CE07081D80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D8AA0FD-6025-4D03-86B9-51CE07081D80}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D8AA0FD-6025-4D03-86B9-51CE07081D80}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D8AA0FD-6025-4D03-86B9-51CE07081D80}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {4671E3B6-4D11-4521-A927-DC3B1072FC4A} = {6607ACC9-71B9-4095-9A81-B6FBB0AAAF17} + {02B7F642-62C1-4BA2-87B0-0B9214319095} = {6607ACC9-71B9-4095-9A81-B6FBB0AAAF17} + EndGlobalSection +EndGlobal diff --git a/FaKrosnoApi/Controllers/CustomerOrdersController.cs b/FaKrosnoApi/Controllers/CustomerOrdersController.cs new file mode 100644 index 0000000..ce0470d --- /dev/null +++ b/FaKrosnoApi/Controllers/CustomerOrdersController.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Mvc; +using SytelineSaAppEfDataModel.Dtos; +using SytelineSaAppEfDataModel.Services; + +namespace FaKrosnoApi.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public class CustomerOrdersController(ICustomerOrderService service) : Controller + { + [HttpGet] + public async Task>> GetAll() + { + IEnumerable ediCustomerOrders = await service.GetAll(); + return Ok(ediCustomerOrders); + } + + [HttpGet("by-order-number")] + public async Task> GetByCustomerOrderNumber([FromQuery] string customerOrderNumber) + { + CustomerOrderDto? scheduleOrder = await service.GetByOrderNumber(customerOrderNumber); + return scheduleOrder != null ? Ok(scheduleOrder) : NotFound(); + } + } +} diff --git a/FaKrosnoApi/Controllers/EdiCustomerOrdersController.cs b/FaKrosnoApi/Controllers/EdiCustomerOrdersController.cs new file mode 100644 index 0000000..4478550 --- /dev/null +++ b/FaKrosnoApi/Controllers/EdiCustomerOrdersController.cs @@ -0,0 +1,39 @@ +using Microsoft.AspNetCore.Mvc; +using SytelineSaAppEfDataModel.Dtos; +using SytelineSaAppEfDataModel.Services; + +namespace FaKrosnoApi.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public class EdiCustomerOrdersController(IEdiCustomerOrderService service) : Controller + { + [HttpGet] + public async Task>> GetAll() + { + IEnumerable ediCustomerOrders = await service.GetAll(); + return Ok(ediCustomerOrders); + } + + [HttpGet("by-date")] + public async Task>> GetByDate([FromQuery] DateTime date) + { + IEnumerable scheduleOrders = await service.GetByDate(date); + return Ok(scheduleOrders); + } + + [HttpGet("by-order-number")] + public async Task> GetByCustomerOrderNumber([FromQuery] string customerOrderNumber) + { + EdiCustomerOrderDto? scheduleOrder = await service.GetByOrderNumber(customerOrderNumber); + return scheduleOrder != null ? Ok(scheduleOrder) : NotFound(); + } + + [HttpPost("send-to-syteline")] + public async Task> SendOrderToSyteline([FromQuery] string customerOrderNumber) + { + int result = await service.SendOrderToSyteline(customerOrderNumber); + return result > 0 ? Ok() : BadRequest(); + } + } +} diff --git a/FaKrosnoApi/Controllers/ErrorLogController.cs b/FaKrosnoApi/Controllers/ErrorLogController.cs new file mode 100644 index 0000000..052c893 --- /dev/null +++ b/FaKrosnoApi/Controllers/ErrorLogController.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Mvc; +using SytelineSaAppEfDataModel.Dtos; +using SytelineSaAppEfDataModel.Services; + +namespace FaKrosnoApi.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public class ErrorLogController(IErrorLogService service) : Controller + { + [HttpGet] + public async Task>> GetAll() + { + IEnumerable errorLogs = await service.GetAll(); + return Ok(errorLogs); + } + + [HttpGet("by-order-number")] + public async Task>> GetByCustomerOrderNumber([FromQuery] string customerOrderNumber) + { + var errorLogs = await service.GetByOrderNumber(customerOrderNumber); + return errorLogs.Any() ? Ok(errorLogs) : NotFound(); + } + } +} diff --git a/FaKrosnoApi/Controllers/ScheduleOrderDetailsController.cs b/FaKrosnoApi/Controllers/ScheduleOrderDetailsController.cs new file mode 100644 index 0000000..0b83aed --- /dev/null +++ b/FaKrosnoApi/Controllers/ScheduleOrderDetailsController.cs @@ -0,0 +1,18 @@ +using FaKrosnoEfDataModel.Dtos; +using FaKrosnoEfDataModel.Services; +using Microsoft.AspNetCore.Mvc; + +namespace FaKrosnoApi.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public class ScheduleOrderDetailsController(IScheduleOrderDetailsService service) : Controller + { + [HttpGet("order/{scheduleOrderId:int}")] + public async Task>> GetByScheduleOrderId(int scheduleOrderId) + { + IEnumerable? scheduleOrderDetails = await service.GetScheduleOrderDetailsAsync(scheduleOrderId); + return Ok(scheduleOrderDetails); + } + } +} diff --git a/FaKrosnoApi/Controllers/ScheduleOrdersController.cs b/FaKrosnoApi/Controllers/ScheduleOrdersController.cs new file mode 100644 index 0000000..df96541 --- /dev/null +++ b/FaKrosnoApi/Controllers/ScheduleOrdersController.cs @@ -0,0 +1,50 @@ +using AutoMapper; +using FaKrosnoEfDataModel; +using FaKrosnoEfDataModel.Dtos; +using FaKrosnoEfDataModel.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace FaKrosnoApi.Controllers +{ + [ApiController] + [Route("api/[controller]")] + //[Authorize] + public class ScheduleOrdersController(IScheduleOrderService service) : Controller + { + [HttpGet] + public async Task>> GetAll() + { + IEnumerable scheduleOrders = await service.GetEntities(); + return Ok(scheduleOrders); + } + + [HttpGet("by-date")] + public async Task>> GetByDate([FromQuery] DateTime date) + { + IEnumerable scheduleOrders = await service.GetEntitiesByLastUpdateDate(date); + return Ok(scheduleOrders); + } + + [HttpGet("{id:int}")] + public async Task> GetById(int id) + { + ScheduleOrderDto? scheduleOrder = await service.GetById(id); + return scheduleOrder != null ? Ok(scheduleOrder) : NotFound(); + } + + [HttpGet("recipient/{recipientId:int}")] + public async Task>> GetByRecipientId(int recipientId) + { + IEnumerable scheduleOrders = await service.GetByRecipientId(recipientId); + return Ok(scheduleOrders); + } + + [HttpGet("recipient/{recipientId:int}/date")] + public async Task>> GetByRecipientAndLastUpdateDate(int recipientId, [FromQuery] DateTime date) + { + IEnumerable scheduleOrders = await service.GetByRecipientAndLastUpdateDate(recipientId, date); + return Ok(scheduleOrders); + } + } +} diff --git a/FaKrosnoApi/FaKrosnoApi.csproj b/FaKrosnoApi/FaKrosnoApi.csproj new file mode 100644 index 0000000..8f460db --- /dev/null +++ b/FaKrosnoApi/FaKrosnoApi.csproj @@ -0,0 +1,26 @@ + + + + net8.0 + enable + enable + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + diff --git a/FaKrosnoApi/FaKrosnoApi.http b/FaKrosnoApi/FaKrosnoApi.http new file mode 100644 index 0000000..ffad669 --- /dev/null +++ b/FaKrosnoApi/FaKrosnoApi.http @@ -0,0 +1,7 @@ +@FaKrosnoApi_HostAddress = http://localhost:5152 + +### Access Swagger UI +GET {{FaKrosnoApi_HostAddress}}/swagger/index.html +Accept: text/html + +### diff --git a/FaKrosnoApi/Program.cs b/FaKrosnoApi/Program.cs new file mode 100644 index 0000000..3682e73 --- /dev/null +++ b/FaKrosnoApi/Program.cs @@ -0,0 +1,73 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.IdentityModel.Tokens; +using System.Text; +using FaKrosnoEfDataModel; +using FaKrosnoEfDataModel.Services; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using SytelineSaAppEfDataModel; +using SytelineSaAppEfDataModel.Services; +using FaKrosnoMappingProfile = FaKrosnoEfDataModel.MappingProfile; +using SytelineSaAppMappingProfile = SytelineSaAppEfDataModel.MappingProfile; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +builder.Services.AddDbContext(options => + options.UseSqlServer(builder.Configuration.GetConnectionString("FaKrosnoConnection"))); +builder.Services.AddDbContext(options => + options.UseSqlServer(builder.Configuration.GetConnectionString("SytelineSaAppConnection"))); + +builder.Services.AddControllers(); +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddOpenApiDocument(config => +{ + config.Title = "FaKrosnoApi"; + config.Version = "v1"; +}); + +// Configure AutoMapper +builder.Services.AddAutoMapper(typeof(FaKrosnoMappingProfile), typeof(SytelineSaAppMappingProfile)); + +// Configure JWT Authentication +builder.Services.AddAuthentication(options => +{ + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; +}).AddJwtBearer(options => +{ + options.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuer = true, + ValidateAudience = true, + ValidateLifetime = true, + ValidateIssuerSigningKey = true, + ValidIssuer = builder.Configuration["Jwt:Issuer"], + ValidAudience = builder.Configuration["Jwt:Audience"], + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])) + }; +}); + +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +//if (app.Environment.IsDevelopment()) +//{ + app.UseOpenApi(); // Serwuje dokument OpenAPI + app.UseSwaggerUi(); // Dodaje interfejs u¿ytkownika Swagger +//} + +app.UseHttpsRedirection(); + +app.UseAuthentication(); +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); \ No newline at end of file diff --git a/FaKrosnoApi/Properties/launchSettings.json b/FaKrosnoApi/Properties/launchSettings.json new file mode 100644 index 0000000..84b2249 --- /dev/null +++ b/FaKrosnoApi/Properties/launchSettings.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:16065", + "sslPort": 0 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger/index.html", + "applicationUrl": "http://localhost:5152", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger/index.html", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/FaKrosnoApi/appsettings.Development.json b/FaKrosnoApi/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/FaKrosnoApi/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/FaKrosnoApi/appsettings.json b/FaKrosnoApi/appsettings.json new file mode 100644 index 0000000..8fc4467 --- /dev/null +++ b/FaKrosnoApi/appsettings.json @@ -0,0 +1,18 @@ +{ + "ConnectionStrings": { + "FaKrosnoConnection": "Server=192.168.0.7;Database=fakrosnotest;User Id=sa;Password=Tetum#2021!;TrustServerCertificate=true", + "SytelineSaAppConnection": "Server=192.168.0.7;Database=SL_PRODTEST_SA_APP;User Id=sa;Password=Tetum#2021!;TrustServerCertificate=true" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "Jwt": { + "Key": "ThisIsASecretKeyForJwt", + "Issuer": "FaKrosnoApi", + "Audience": "FaKrosnoClient" + }, + "AllowedHosts": "*" +} diff --git a/FaKrosnoEfDataModel/Dtos/DtoBase.cs b/FaKrosnoEfDataModel/Dtos/DtoBase.cs new file mode 100644 index 0000000..f9f55fa --- /dev/null +++ b/FaKrosnoEfDataModel/Dtos/DtoBase.cs @@ -0,0 +1,7 @@ +namespace FaKrosnoEfDataModel.Dtos +{ + public class DtoBase + { + public int ID { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Dtos/PurchaserDto.cs b/FaKrosnoEfDataModel/Dtos/PurchaserDto.cs new file mode 100644 index 0000000..481ca32 --- /dev/null +++ b/FaKrosnoEfDataModel/Dtos/PurchaserDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Dtos +{ + public class PurchaserDto : DtoBase + { + public string PurchaserCode { get; set; } + public string PurchaserDesc { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Dtos/RecipientDto.cs b/FaKrosnoEfDataModel/Dtos/RecipientDto.cs new file mode 100644 index 0000000..ca8708e --- /dev/null +++ b/FaKrosnoEfDataModel/Dtos/RecipientDto.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Dtos +{ + public class RecipientDto : DtoBase + { + public int PurchaserID { get; set; } + public string RecipientCode { get; set; } + public string RecipientDesc { get; set; } + + public PurchaserDto Purchaser { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailDetailDto.cs b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailDetailDto.cs new file mode 100644 index 0000000..e8faac4 --- /dev/null +++ b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailDetailDto.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Dtos +{ + public class ScheduleOrderDetailDetailDto : DtoBase + { + public int ScheduleOrderDetailID { get; set; } + public int Qty { get; set; } + public DateTime DateFrom { get; set; } + public DateTime DateTo { get; set; } + public string SccType { get; set; } + public string? SccDesc { get; set; } + public string? QtyType { get; set; } + public string? QtyDesc { get; set; } + public string Status { get; set; } + public DateTime? ShipDate { get; set; } + public DateTime LastUpdateDate { get; set; } + + public IList ScheduleOrderDetailDetailMiscs { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailDetailMiscDto.cs b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailDetailMiscDto.cs new file mode 100644 index 0000000..6603f02 --- /dev/null +++ b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailDetailMiscDto.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Dtos +{ + public class ScheduleOrderDetailDetailMiscDto : DtoBase + { + public int ScheduleOrderDetailDetailID { get; set; } + public string Type { get; set; } + public string Value { get; set; } + public string? Label { get; set; } + public bool Display { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailDto.cs b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailDto.cs new file mode 100644 index 0000000..c078a2c --- /dev/null +++ b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailDto.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Dtos +{ + public class ScheduleOrderDetailDto : DtoBase + { + public int ScheduleOrderID { get; set; } + public string Sc_productCode { get; set; } + public string Sh_productCode { get; set; } + public int? Price { get; set; } + + public IList ScheduleOrderDetailDetails { get; set; } + public IList ScheduleOrderDetailMiscs { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailMiscDto.cs b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailMiscDto.cs new file mode 100644 index 0000000..404734d --- /dev/null +++ b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDetailMiscDto.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Dtos +{ + public class ScheduleOrderDetailMiscDto : DtoBase + { + public int ScheduleOrderDetailID { get; set; } + public string Type { get; set; } + public string Value { get; set; } + public string? Label { get; set; } + public bool Display { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Dtos/ScheduleOrderDto.cs b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDto.cs new file mode 100644 index 0000000..77a03dc --- /dev/null +++ b/FaKrosnoEfDataModel/Dtos/ScheduleOrderDto.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Dtos +{ + public class ScheduleOrderDto : DtoBase + { + public string PONum { get; set; } + public int OrderID { get; set; } + public int RecipientID { get; set; } + public DateTime LastUpdateDate { get; set; } + public int DocNumber { get; set; } + public string? DocType { get; set; } + + public RecipientDto Recipient { get; set; } + + public IList ScheduleOrderDetails { get; set; } + public IList ScheduleOrderMiscs { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Dtos/ScheduleOrderMiscDto.cs b/FaKrosnoEfDataModel/Dtos/ScheduleOrderMiscDto.cs new file mode 100644 index 0000000..a536510 --- /dev/null +++ b/FaKrosnoEfDataModel/Dtos/ScheduleOrderMiscDto.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Dtos +{ + public class ScheduleOrderMiscDto : DtoBase + { + public int ScheduleOrderID { get; set; } + public string Type { get; set; } + public string Value { get; set; } + public string? Label { get; set; } + public bool Display { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Entities/EntityBase.cs b/FaKrosnoEfDataModel/Entities/EntityBase.cs new file mode 100644 index 0000000..1fd7bb6 --- /dev/null +++ b/FaKrosnoEfDataModel/Entities/EntityBase.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Entities +{ + public class EntityBase + { + public int ID { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Entities/Purchaser.cs b/FaKrosnoEfDataModel/Entities/Purchaser.cs new file mode 100644 index 0000000..3de62ae --- /dev/null +++ b/FaKrosnoEfDataModel/Entities/Purchaser.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Entities +{ + public class Purchaser : EntityBase + { + public string PurchaserCode { get; set; } + public string PurchaserDesc { get; set; } + public ICollection Recipients { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Entities/Recipient.cs b/FaKrosnoEfDataModel/Entities/Recipient.cs new file mode 100644 index 0000000..0471748 --- /dev/null +++ b/FaKrosnoEfDataModel/Entities/Recipient.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Entities +{ + public class Recipient : EntityBase + { + public int PurchaserID { get; set; } + public Purchaser Purchaser { get; set; } + public string RecipientCode { get; set; } + public string RecipientDesc { get; set; } + public ICollection ScheduleOrders { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Entities/ScheduleOrder.cs b/FaKrosnoEfDataModel/Entities/ScheduleOrder.cs new file mode 100644 index 0000000..2f0165d --- /dev/null +++ b/FaKrosnoEfDataModel/Entities/ScheduleOrder.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Entities +{ + public class ScheduleOrder : EntityBase + { + public string PONum { get; set; } + public int OrderID { get; set; } + public int RecipientID { get; set; } + public Recipient Recipient { get; set; } + public DateTime LastUpdateDate { get; set; } + public int DocNumber { get; set; } + public string? DocType { get; set; } + public ICollection ScheduleOrderDetails { get; set; } + public ICollection ScheduleOrderMiscs { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Entities/ScheduleOrderDetail.cs b/FaKrosnoEfDataModel/Entities/ScheduleOrderDetail.cs new file mode 100644 index 0000000..30313e4 --- /dev/null +++ b/FaKrosnoEfDataModel/Entities/ScheduleOrderDetail.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Entities +{ + public class ScheduleOrderDetail : EntityBase + { + public int ScheduleOrderID { get; set; } + public ScheduleOrder ScheduleOrder { get; set; } + public string Sc_productCode { get; set; } + public string Sh_productCode { get; set; } + public int? Price { get; set; } + public ICollection ScheduleOrderDetailDetails { get; set; } + public ICollection ScheduleOrderDetailMiscs { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Entities/ScheduleOrderDetailDetail.cs b/FaKrosnoEfDataModel/Entities/ScheduleOrderDetailDetail.cs new file mode 100644 index 0000000..aa17364 --- /dev/null +++ b/FaKrosnoEfDataModel/Entities/ScheduleOrderDetailDetail.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Entities +{ + public class ScheduleOrderDetailDetail : EntityBase + { + public int ScheduleOrderDetailID { get; set; } + public ScheduleOrderDetail ScheduleOrderDetail { get; set; } + public int Qty { get; set; } + public DateTime DateFrom { get; set; } + public DateTime DateTo { get; set; } + public string SccType { get; set; } + public string? SccDesc { get; set; } + public string? QtyType { get; set; } + public string? QtyDesc { get; set; } + public string Status { get; set; } + public DateTime? ShipDate { get; set; } + public DateTime LastUpdateDate { get; set; } + public ICollection ScheduleOrderDetailDetailMiscs { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Entities/ScheduleOrderDetailDetailMisc.cs b/FaKrosnoEfDataModel/Entities/ScheduleOrderDetailDetailMisc.cs new file mode 100644 index 0000000..ee3eb90 --- /dev/null +++ b/FaKrosnoEfDataModel/Entities/ScheduleOrderDetailDetailMisc.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Entities +{ + public class ScheduleOrderDetailDetailMisc : EntityBase + { + public int ScheduleOrderDetailDetailID { get; set; } + public ScheduleOrderDetailDetail ScheduleOrderDetailDetail { get; set; } + public string Type { get; set; } + public string Value { get; set; } + public string? Label { get; set; } + public bool Display { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Entities/ScheduleOrderDetailMisc.cs b/FaKrosnoEfDataModel/Entities/ScheduleOrderDetailMisc.cs new file mode 100644 index 0000000..8f059b6 --- /dev/null +++ b/FaKrosnoEfDataModel/Entities/ScheduleOrderDetailMisc.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Entities +{ + public class ScheduleOrderDetailMisc : EntityBase + { + public int ScheduleOrderDetailID { get; set; } + public ScheduleOrderDetail ScheduleOrderDetail { get; set; } + public string Type { get; set; } + public string Value { get; set; } + public string? Label { get; set; } + public bool Display { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/Entities/ScheduleOrderMisc.cs b/FaKrosnoEfDataModel/Entities/ScheduleOrderMisc.cs new file mode 100644 index 0000000..da51d22 --- /dev/null +++ b/FaKrosnoEfDataModel/Entities/ScheduleOrderMisc.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Entities +{ + public class ScheduleOrderMisc : EntityBase + { + public int ScheduleOrderID { get; set; } + public ScheduleOrder ScheduleOrder { get; set; } + public string Type { get; set; } + public string Value { get; set; } + public string? Label { get; set; } + public bool Display { get; set; } + } +} diff --git a/FaKrosnoEfDataModel/FaKrosnoDbContext.cs b/FaKrosnoEfDataModel/FaKrosnoDbContext.cs new file mode 100644 index 0000000..2e42258 --- /dev/null +++ b/FaKrosnoEfDataModel/FaKrosnoDbContext.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using FaKrosnoEfDataModel.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; + +namespace FaKrosnoEfDataModel +{ + public class FaKrosnoDbContext : DbContext + { + public FaKrosnoDbContext(DbContextOptions options) : base(options) { } + + public DbSet Purchasers { get; set; } + public DbSet Recipients { get; set; } + public DbSet ScheduleOrders { get; set; } + public DbSet ScheduleOrderDetails { get; set; } + public DbSet ScheduleOrderDetailDetails { get; set; } + public DbSet ScheduleOrderDetailDetailMiscs { get; set; } + public DbSet ScheduleOrderDetailMiscs { get; set; } + public DbSet ScheduleOrderMiscs { get; set; } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .Build(); + + var connectionString = configuration.GetConnectionString("FaKrosnoConnection"); + optionsBuilder.UseSqlServer(connectionString, options => options.CommandTimeout(300)); + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity().ToTable("purchaser"); + + modelBuilder.Entity().ToTable("recipient") + .HasOne(p => p.Purchaser) + .WithMany(p => p.Recipients) + .HasForeignKey(p => p.PurchaserID); + + modelBuilder.Entity().ToTable("schedule_order") + .HasOne(s => s.Recipient) + .WithMany(r => r.ScheduleOrders) + .HasForeignKey(s => s.RecipientID); + + modelBuilder.Entity().ToTable("schedule_order_detail") + .HasOne(s => s.ScheduleOrder) + .WithMany(s => s.ScheduleOrderDetails) + .HasForeignKey(s => s.ScheduleOrderID); + + modelBuilder.Entity().ToTable("schedule_order_detail_detail") + .HasOne(s => s.ScheduleOrderDetail) + .WithMany(s => s.ScheduleOrderDetailDetails) + .HasForeignKey(s => s.ScheduleOrderDetailID); + + modelBuilder.Entity().ToTable("schedule_order_detail_detail_misc") + .HasOne(s => s.ScheduleOrderDetailDetail) + .WithMany(s => s.ScheduleOrderDetailDetailMiscs) + .HasForeignKey(s => s.ScheduleOrderDetailDetailID); + + modelBuilder.Entity().ToTable("schedule_order_detail_misc") + .HasOne(s => s.ScheduleOrderDetail) + .WithMany(s => s.ScheduleOrderDetailMiscs) + .HasForeignKey(s => s.ScheduleOrderDetailID); + + modelBuilder.Entity().ToTable("schedule_order_misc") + .HasOne(s => s.ScheduleOrder) + .WithMany(s => s.ScheduleOrderMiscs) + .HasForeignKey(s => s.ScheduleOrderID); + + modelBuilder.Entity(entity => entity.Property(x => x.Price).IsRequired(false)); + + modelBuilder.Entity(entity => entity.Property(x => x.Label).IsRequired(false)); + + modelBuilder.Entity(entity => entity.Property(x => x.Label).IsRequired(false)); + + modelBuilder.Entity(entity => + { + entity.Property(x => x.SccDesc).IsRequired(false); + entity.Property(x => x.QtyType).IsRequired(false); + entity.Property(x => x.QtyDesc).IsRequired(false); + entity.Property(x => x.ShipDate).IsRequired(false); + }); + } + } +} diff --git a/FaKrosnoEfDataModel/FaKrosnoEfDataModel.csproj b/FaKrosnoEfDataModel/FaKrosnoEfDataModel.csproj new file mode 100644 index 0000000..e08b4c1 --- /dev/null +++ b/FaKrosnoEfDataModel/FaKrosnoEfDataModel.csproj @@ -0,0 +1,31 @@ + + + + net8.0 + enable + enable + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + Always + + + + diff --git a/FaKrosnoEfDataModel/MappingProfile.cs b/FaKrosnoEfDataModel/MappingProfile.cs new file mode 100644 index 0000000..a0a5ef4 --- /dev/null +++ b/FaKrosnoEfDataModel/MappingProfile.cs @@ -0,0 +1,25 @@ +using AutoMapper; +using FaKrosnoEfDataModel.Dtos; +using FaKrosnoEfDataModel.Entities; + +namespace FaKrosnoEfDataModel +{ + public class MappingProfile : Profile + { + public MappingProfile() + { + CreateMap().ReverseMap(); + CreateMap().IncludeBase().ReverseMap(); + CreateMap().IncludeBase().ReverseMap(); + CreateMap().IncludeBase().ReverseMap(); + CreateMap().IncludeBase().ReverseMap(); + CreateMap().IncludeBase() + .ReverseMap(); + CreateMap() + .IncludeBase().ReverseMap(); + CreateMap().IncludeBase() + .ReverseMap(); + CreateMap().IncludeBase().ReverseMap(); + } + } +} diff --git a/FaKrosnoEfDataModel/Queries/ScheduleOrderQueries.cs b/FaKrosnoEfDataModel/Queries/ScheduleOrderQueries.cs new file mode 100644 index 0000000..1e699eb --- /dev/null +++ b/FaKrosnoEfDataModel/Queries/ScheduleOrderQueries.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using FaKrosnoEfDataModel.Entities; +using Microsoft.EntityFrameworkCore; + +namespace FaKrosnoEfDataModel.Queries +{ + public static class ScheduleOrderQueries + { + public static readonly Func> GetEntities = + EF.CompileQuery((FaKrosnoDbContext context) => context.ScheduleOrders.Include(x => x.Recipient).ThenInclude(x => x.Purchaser) + .Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailMiscs) + .Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailDetails) + .ThenInclude(x => x.ScheduleOrderDetailDetailMiscs).Include(x => x.ScheduleOrderMiscs)); + + public static readonly Func> GetEntitiesByDate = + EF.CompileQuery((FaKrosnoDbContext context, DateTime fromDate) => context.ScheduleOrders + .Include(x => x.Recipient).ThenInclude(x => x.Purchaser).Include(x => x.ScheduleOrderDetails) + .ThenInclude(x => x.ScheduleOrderDetailMiscs).Include(x => x.ScheduleOrderDetails) + .ThenInclude(x => x.ScheduleOrderDetailDetails).ThenInclude(x => x.ScheduleOrderDetailDetailMiscs) + .Include(x => x.ScheduleOrderMiscs).Where(x => x.LastUpdateDate > fromDate)); + + public static readonly Func GetById = EF.CompileQuery( + (FaKrosnoDbContext context, int id) => context.ScheduleOrders.Include(x => x.Recipient).ThenInclude(x => x.Purchaser) + .Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailMiscs) + .Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailDetails) + .ThenInclude(x => x.ScheduleOrderDetailDetailMiscs).Include(x => x.ScheduleOrderMiscs) + .FirstOrDefault(x => x.ID == id)); + } +} diff --git a/FaKrosnoEfDataModel/Services/IScheduleOrderDetailsService.cs b/FaKrosnoEfDataModel/Services/IScheduleOrderDetailsService.cs new file mode 100644 index 0000000..1500513 --- /dev/null +++ b/FaKrosnoEfDataModel/Services/IScheduleOrderDetailsService.cs @@ -0,0 +1,14 @@ +using FaKrosnoEfDataModel.Dtos; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FaKrosnoEfDataModel.Services +{ + public interface IScheduleOrderDetailsService + { + Task?> GetScheduleOrderDetailsAsync(int scheduleOrderId); + } +} diff --git a/FaKrosnoEfDataModel/Services/IScheduleOrderService.cs b/FaKrosnoEfDataModel/Services/IScheduleOrderService.cs new file mode 100644 index 0000000..e0199f9 --- /dev/null +++ b/FaKrosnoEfDataModel/Services/IScheduleOrderService.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using FaKrosnoEfDataModel.Dtos; + +namespace FaKrosnoEfDataModel.Services +{ + public interface IScheduleOrderService + { + Task> GetEntities(); + Task GetById(int id); + Task> GetByRecipientId(int recipientId); + Task> GetEntitiesByLastUpdateDate(DateTime date); + Task> GetByRecipientAndLastUpdateDate(int recipientId, DateTime date); + } +} diff --git a/FaKrosnoEfDataModel/Services/ScheduleOrderDetailsService.cs b/FaKrosnoEfDataModel/Services/ScheduleOrderDetailsService.cs new file mode 100644 index 0000000..eed0a92 --- /dev/null +++ b/FaKrosnoEfDataModel/Services/ScheduleOrderDetailsService.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using AutoMapper; +using AutoMapper.QueryableExtensions; +using FaKrosnoEfDataModel.Dtos; +using Microsoft.EntityFrameworkCore; + +namespace FaKrosnoEfDataModel.Services +{ + public class ScheduleOrderDetailsService : ServiceBase, IScheduleOrderDetailsService + { + public ScheduleOrderDetailsService(FaKrosnoDbContext context, IMapper mapper) : base(context, mapper) + { + } + + public async Task?> GetScheduleOrderDetailsAsync(int scheduleOrderId) + { + return await Context.ScheduleOrderDetails.Where(x => x.ScheduleOrderID == scheduleOrderId) + .ProjectTo(Mapper.ConfigurationProvider).ToListAsync(); + } + } +} diff --git a/FaKrosnoEfDataModel/Services/ScheduleOrderService.cs b/FaKrosnoEfDataModel/Services/ScheduleOrderService.cs new file mode 100644 index 0000000..2a7dfed --- /dev/null +++ b/FaKrosnoEfDataModel/Services/ScheduleOrderService.cs @@ -0,0 +1,51 @@ +using AutoMapper; +using FaKrosnoEfDataModel.Dtos; +using FaKrosnoEfDataModel.Entities; +using FaKrosnoEfDataModel.Queries; +using Microsoft.EntityFrameworkCore; + +namespace FaKrosnoEfDataModel.Services +{ + public class ScheduleOrderService : ServiceBase, IScheduleOrderService + { + public ScheduleOrderService(FaKrosnoDbContext context, IMapper mapper) : base(context, mapper) + { + } + + public override async Task GetById(int id) + { + var scheduleOrder = await Task.FromResult(ScheduleOrderQueries.GetById(Context, id)); + + return scheduleOrder != null ? Mapper.Map(scheduleOrder) : null; + } + + public async Task> GetByRecipientId(int recipientId) + { + IList scheduleOrders = (await GetAll()).ToList(); + + return scheduleOrders.Where(x => x?.RecipientID == recipientId); + } + + public async Task> GetByRecipientAndLastUpdateDate(int recipientId, DateTime date) + { + IList scheduleOrders = (await GetEntitiesByLastUpdateDate(date)).ToList(); + + return scheduleOrders.Where(x => x?.RecipientID == recipientId && x.LastUpdateDate >= date); + } + + public async Task> GetEntities() + { + IList scheduleOrders = await Context.ScheduleOrders.Include(x => x.Recipient) + .ThenInclude(x => x.Purchaser).ToListAsync(); + + return Mapper.Map>(scheduleOrders); + } + public async Task> GetEntitiesByLastUpdateDate(DateTime date) + { + IList scheduleOrders = + (await Task.FromResult(ScheduleOrderQueries.GetEntitiesByDate(Context, date))).ToList(); + + return Mapper.Map>(scheduleOrders); + } + } +} \ No newline at end of file diff --git a/FaKrosnoEfDataModel/Services/ServiceBase.cs b/FaKrosnoEfDataModel/Services/ServiceBase.cs new file mode 100644 index 0000000..c78cb88 --- /dev/null +++ b/FaKrosnoEfDataModel/Services/ServiceBase.cs @@ -0,0 +1,73 @@ +using AutoMapper; +using AutoMapper.Internal; +using FaKrosnoEfDataModel.Dtos; +using Microsoft.EntityFrameworkCore; +using System.Reflection; + +namespace FaKrosnoEfDataModel.Services +{ + public class ServiceBase where T : DtoBase + { + protected readonly FaKrosnoDbContext Context; + protected readonly IMapper Mapper; + protected readonly Type EntityType; + + public ServiceBase(FaKrosnoDbContext context, IMapper mapper) + { + Context = context; + Mapper = mapper; + EntityType = FindEntityTypeForDto(typeof(T)); + } + + public virtual async Task GetById(int id) + { + object? entity = await Context.FindAsync(EntityType, id); + + if (entity != null) + { + return (T)Mapper.Map(entity, entity.GetType(), typeof(T)); + } + + return default; + } + + public virtual async Task> GetAll() + { + MethodInfo? setMethod = + typeof(DbContext).GetMethod("Set", Array.Empty())?.MakeGenericMethod(EntityType); + + IQueryable? dbSet = setMethod?.Invoke(Context, null) as IQueryable; + + if (dbSet == null) + { + throw new InvalidOperationException("Failed to get DbSet for entity type."); + } + + IList entities = await Task.Run(() => dbSet.Cast().ToListAsync()); + + return entities.Select(e => (T)Mapper.Map(e, e.GetType(), typeof(T))); + } + + private Type FindEntityTypeForDto(Type dtoType) + { + IGlobalConfiguration? internalApi = Mapper.ConfigurationProvider.Internal(); + + TypeMap map = internalApi.FindTypeMapFor(dtoType, null); + + if (map != null) + { + return map.DestinationType; + } + + foreach (var typeMap in internalApi.GetAllTypeMaps()) + { + if (typeMap.SourceType == dtoType) + { + return typeMap.DestinationType; + } + } + + throw new InvalidOperationException($"No mapping found for DTO type: {dtoType.Name}"); + } + } +} diff --git a/FaKrosnoEfDataModel/appsettings.json b/FaKrosnoEfDataModel/appsettings.json new file mode 100644 index 0000000..af35e7e --- /dev/null +++ b/FaKrosnoEfDataModel/appsettings.json @@ -0,0 +1,5 @@ +{ + "ConnectionStrings": { + "FaKrosnoConnection": "Server=192.168.0.7;Database=fakrosnotest;User Id=sa;Password=Tetum#2021!;TrustServerCertificate=true" + } +} \ No newline at end of file diff --git a/FaKrosnoEfDataModelTests/FaKrosnoEfDataModelTests.csproj b/FaKrosnoEfDataModelTests/FaKrosnoEfDataModelTests.csproj new file mode 100644 index 0000000..3971f58 --- /dev/null +++ b/FaKrosnoEfDataModelTests/FaKrosnoEfDataModelTests.csproj @@ -0,0 +1,15 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + diff --git a/FaKrosnoEfDataModelTests/Program.cs b/FaKrosnoEfDataModelTests/Program.cs new file mode 100644 index 0000000..18a5026 --- /dev/null +++ b/FaKrosnoEfDataModelTests/Program.cs @@ -0,0 +1,4 @@ +using FaKrosnoEfDataModelTests; + +Service service = new Service(); +await service.Process(); \ No newline at end of file diff --git a/FaKrosnoEfDataModelTests/Service.cs b/FaKrosnoEfDataModelTests/Service.cs new file mode 100644 index 0000000..ab404f8 --- /dev/null +++ b/FaKrosnoEfDataModelTests/Service.cs @@ -0,0 +1,57 @@ +using FaKrosnoEfDataModel; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using FaKrosnoEfDataModel.Services; +using AutoMapper; +using FaKrosnoEfDataModel.Dtos; +using FaKrosnoEfDataModel.Entities; +using SytelineSaAppEfDataModel; +using SytelineSaAppEfDataModel.Dtos; +using MappingProfile = FaKrosnoEfDataModel.MappingProfile; +using MappingProfileSl = SytelineSaAppEfDataModel.MappingProfile; + +namespace FaKrosnoEfDataModelTests +{ + internal class Service + { + public async Task Process() + { + Console.WriteLine("Test"); + + var config = new MapperConfiguration(cfg => + { + cfg.AddProfile(); + cfg.AddProfile(); + }); + + IMapper mapper = config.CreateMapper(); + + ServiceBase serviceBase = + new ServiceBase(new FaKrosnoDbContext(new DbContextOptions()), mapper); + + IScheduleOrderService scheduleOrderService = + new ScheduleOrderService(new FaKrosnoDbContext(new DbContextOptions()), mapper); + + //var entitiesByLastUpdateDate = scheduleOrderService.GetEntitiesByLastUpdateDate(new DateTime(2024, 11, 12)); + //var purchaserDtos = await scheduleOrderService.GetById(15543); + //var byId = await serviceBase.GetById(15543); + + SytelineSaAppEfDataModel.Services.EdiCustomerOrderService serviceBase1 = + new SytelineSaAppEfDataModel.Services.EdiCustomerOrderService(new SytelineSaAppDbContext(new DbContextOptions()), mapper); + + SytelineSaAppEfDataModel.Services.ErrorLogService serviceBase2 = + new SytelineSaAppEfDataModel.Services.ErrorLogService(new SytelineSaAppDbContext(new DbContextOptions()), mapper); + //IEnumerable task = await serviceBase1.GetByDate(new DateTime(2025, 1, 1)); + + //EdiCustomerOrderDto ediCustomerOrderDto = await serviceBase1.GetByOrderNumber("EDI0004323"); + + //var sendOrderToSyteline = serviceBase1.SendOrderToSyteline("EDI0004475"); + + var byOrderNumber = serviceBase2.GetByOrderNumber("EDI0004490"); + } + } +} diff --git a/OrdersManagement/Components/App.razor b/OrdersManagement/Components/App.razor new file mode 100644 index 0000000..0072362 --- /dev/null +++ b/OrdersManagement/Components/App.razor @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OrdersManagement/Components/Layout/MainLayout.razor b/OrdersManagement/Components/Layout/MainLayout.razor new file mode 100644 index 0000000..b94cf77 --- /dev/null +++ b/OrdersManagement/Components/Layout/MainLayout.razor @@ -0,0 +1,52 @@ +@using BlazorBootstrap +@inherits LayoutComponentBase + +
+ + + +
+
+ About +
+ +
+
@Body
+
+
+ +
+ +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Zamówienia DELFOR", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/edicustomerorders", IconName = IconName.Database, Text = "Zamówienia klienta EDI"} + }; + + return navItems; + } +} + + +
+ An unhandled error has occurred. + Reload + 🗙 +
\ No newline at end of file diff --git a/OrdersManagement/Components/Layout/MainLayout.razor.css b/OrdersManagement/Components/Layout/MainLayout.razor.css new file mode 100644 index 0000000..038baf1 --- /dev/null +++ b/OrdersManagement/Components/Layout/MainLayout.razor.css @@ -0,0 +1,96 @@ +.page { + position: relative; + display: flex; + flex-direction: column; +} + +main { + flex: 1; +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + +.top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + height: 3.5rem; + display: flex; + align-items: center; +} + + .top-row ::deep a, .top-row ::deep .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + text-decoration: none; + } + + .top-row ::deep a:hover, .top-row ::deep .btn-link:hover { + text-decoration: underline; + } + + .top-row ::deep a:first-child { + overflow: hidden; + text-overflow: ellipsis; + } + +@media (max-width: 640.98px) { + .top-row { + justify-content: space-between; + } + + .top-row ::deep a, .top-row ::deep .btn-link { + margin-left: 0; + } +} + +@media (min-width: 641px) { + .page { + flex-direction: row; + } + + .sidebar { + width: 250px; + height: 100vh; + position: sticky; + top: 0; + } + + .top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .top-row.auth ::deep a:first-child { + flex: 1; + text-align: right; + width: 0; + } + + .top-row, article { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + + #blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; + } diff --git a/OrdersManagement/Components/Layout/NavMenu.razor b/OrdersManagement/Components/Layout/NavMenu.razor new file mode 100644 index 0000000..f8d4efd --- /dev/null +++ b/OrdersManagement/Components/Layout/NavMenu.razor @@ -0,0 +1,30 @@ + + + + + + diff --git a/OrdersManagement/Components/Layout/NavMenu.razor.css b/OrdersManagement/Components/Layout/NavMenu.razor.css new file mode 100644 index 0000000..4e15395 --- /dev/null +++ b/OrdersManagement/Components/Layout/NavMenu.razor.css @@ -0,0 +1,105 @@ +.navbar-toggler { + appearance: none; + cursor: pointer; + width: 3.5rem; + height: 2.5rem; + color: white; + position: absolute; + top: 0.5rem; + right: 1rem; + border: 1px solid rgba(255, 255, 255, 0.1); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1); +} + +.navbar-toggler:checked { + background-color: rgba(255, 255, 255, 0.5); +} + +.top-row { + height: 3.5rem; + background-color: rgba(0,0,0,0.4); +} + +.navbar-brand { + font-size: 1.1rem; +} + +.bi { + display: inline-block; + position: relative; + width: 1.25rem; + height: 1.25rem; + margin-right: 0.75rem; + top: -1px; + background-size: cover; +} + +.bi-house-door-fill-nav-menu { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E"); +} + +.bi-plus-square-fill-nav-menu { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E"); +} + +.bi-list-nested-nav-menu { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E"); +} + +.nav-item { + font-size: 0.9rem; + padding-bottom: 0.5rem; +} + + .nav-item:first-of-type { + padding-top: 1rem; + } + + .nav-item:last-of-type { + padding-bottom: 1rem; + } + + .nav-item ::deep .nav-link { + color: #d7d7d7; + background: none; + border: none; + border-radius: 4px; + height: 3rem; + display: flex; + align-items: center; + line-height: 3rem; + width: 100%; + } + +.nav-item ::deep a.active { + background-color: rgba(255,255,255,0.37); + color: white; +} + +.nav-item ::deep .nav-link:hover { + background-color: rgba(255,255,255,0.1); + color: white; +} + +.nav-scrollable { + display: none; +} + +.navbar-toggler:checked ~ .nav-scrollable { + display: block; +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .nav-scrollable { + /* Never collapse the sidebar for wide screens */ + display: block; + + /* Allow sidebar to scroll for tall menus */ + height: calc(100vh - 3.5rem); + overflow-y: auto; + } +} diff --git a/OrdersManagement/Components/Pages/EdiCustomerOrder.razor b/OrdersManagement/Components/Pages/EdiCustomerOrder.razor new file mode 100644 index 0000000..4730f95 --- /dev/null +++ b/OrdersManagement/Components/Pages/EdiCustomerOrder.razor @@ -0,0 +1,269 @@ +@page "/edicustomerorder/{CustomerOrderId}" + +@inject EdiCustomerOrderService EdiCustomerOrderService +@using SytelineSaAppEfDataModel.Dtos +@inherits LayoutComponentBase + +
+

Zamówienie Klienta EDI

+
+
+
+ + + Numer zamówienia EDI:@context.CustomerOrderNumber
+ Numer zamówienia Klienta:@context.CustomerPoNumber
+ Numer klienta:@context.CustomerNumber
+ Klient:@context.CustomerName
+ Numer odbiorcy:@(context.CustomerSequence?.ToString() ?? "N/A")
+ Data otrzymania:@(context.RecivedDate?.ToString("dd.MM.yyyy HH:mm:ss") ?? "N/A")
+ Wysłano do Syteline?:@((context.Posted?.ToString() ?? "0") == "0" ? "NIE" : "TAK")
+ Data wysyłki do Syteline:@(context.PostedDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A")
+ Data zamówienia:@(context.OrderDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A")
+
+
+
+
+ + + Cena:@(context.Price?.ToString("F2") ?? "N/A")
+ Waga:@(context.Weight?.ToString("F2") ?? "N/A")
+ Magazyn:@context.Warehouse
+ Gate:@context.Gate
+ Kod odbiorcy:@context.RecipientCode
+ Kod wysyłającego:@context.SenderCode
+ Kod sprzedawcy:@context.SellerCode
+ Kod kupujÄ…cego:@context.BuyerCode
+ Typ dokumentu:@context.DocType
+
+
+
+
+
+ + + Id:@context.Id
+ CoEdiOrder:@context.CoEdiOrder
+ CoRowPointer:@context.CoRowPointer
+ CoCoNum:@context.CoCoNum
+ CoType:@context.CoType
+ CoTakenBy:@context.CoTakenBy
+ EdiCoCoNum:@context.EdiCoCoNum
+ OrdersCount:@context.OrdersCount
+ OrderFound:@context.OrderFound
+ CreatedDate:@context.CreatedDate.ToString("yyyy-MM-dd HH:mm:ss")
+ FoundNumbers:@context.FoundNumbers
+ ScheduleOrderId:@context.ScheduleOrderId
+
+
+
+
+

Indeksy

+
+
+ + + + @context.CustomerOrderLine + + + @context.Item + + + @context.CustomerItemNumber + + + @context.BlanketQty + + + @context.Address + + + @context.BoxType + + + @context.FinalDestination + + + @context.QtyPerBox + + + +
+@if (_isVisibleEdiCustomerOrderLine) +{ +
+

Szczegóły

+
+
+
+ + + CustomerOrderNumber:@context.CustomerOrderNumber
+ CustomerOrderLine:@context.CustomerOrderLine
+ Item:@context.Item
+ CustomerItemNumber:@context.CustomerItemNumber
+ BlanketQty:@(context.BlanketQty?.ToString("F2") ?? "N/A")
+ EffectiveDate:@(context.EffectiveDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A")
+ ExpirationDate:@(context.ExpirationDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A")
+ ContPrice:@(context.ContPrice?.ToString("F2") ?? "N/A")
+ Status:@context.Status
+ Uom:@context.Uom
+
+
+
+
+ + + BlanketQtyReleased:@(context.BlanketQtyReleased?.ToString("F2") ?? "N/A")
+ ContPriceReleased:@(context.ContPriceReleased?.ToString("F2") ?? "N/A")
+ QtySent:@(context.QtySent?.ToString("F2") ?? "N/A")
+ RecordDate:@context.RecordDate.ToString("yyyy-MM-dd HH:mm:ss")
+ Description:@context.Description
+ CreateDate:@context.CreateDate.ToString("yyyy-MM-dd HH:mm:ss")
+ BoxType:@context.BoxType
+ Address:@context.Address
+ FinalDestination:@context.FinalDestination
+ QtyPerBox:@(context.QtyPerBox?.ToString() ?? "N/A") +
+
+
+
+
+

Harmonogramy

+
+ + + + @context.CustomerOrderRelease + + + @context.QtyOrdered + + + @context.DueDate?.ToString("yyyy-MM-dd") + + + @context.RoutingCode + + + @context.PalletCode + + + @context.UnloadingPoint + + + @context.DestinationPoint + + + +
+}@if (_isVisibleEdiCustomerOrderLineItem) +{ +
+

Szczegóły

+
+
+
+ + + ReceivedDate:@(context.ReceivedDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A")
+ CustomerOrderNumber:@context.CustomerOrderNumber
+ CustomerOrderLine:@context.CustomerOrderLine
+ CustomerOrderRelease:@context.CustomerOrderRelease
+ Item:@context.Item
+ CustomerItem:@context.CustomerItem
+ QtyOrdered:@(context.QtyOrdered?.ToString("F2") ?? "N/A")
+ QtyReady:@(context.QtyReady?.ToString("F2") ?? "N/A")
+ Cost:@(context.Cost?.ToString("F2") ?? "N/A")
+ Price:@(context.Price?.ToString("F2") ?? "N/A")
+ DueDate:@(context.DueDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A")
+ ReleaseDate:@(context.ReleaseDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A")
+ Warehouse:@context.Warehouse
+
+
+
+
+ + + TaxCodeOne:@context.TaxCodeOne
+ Uom:@context.Uom
+ QtyOrderedReleased:@(context.QtyOrderedReleased?.ToString("F2") ?? "N/A")
+ PriceReleased:@(context.PriceReleased?.ToString("F2") ?? "N/A")
+ CustomerOrderCustomerNumber:@context.CustomerOrderCustomerNumber
+ Description:@context.Description
+ CreateDate:@context.CreateDate.ToString("yyyy-MM-dd HH:mm:ss")
+ RoutingCode:@context.RoutingCode
+ DeliveryCallNumber:@context.DeliveryCallNumber
+ UnloadingPoint:@context.UnloadingPoint
+ DestinationPoint:@context.DestinationPoint
+ PalletCode:@context.PalletCode
+ PalletNumber:@context.PalletNumber +
+
+
+
+} +@code { + + [Parameter] + public string CustomerOrderId { get; set; } = string.Empty; + + List? _ediCustomerOrder; + List _ediCustomerOrderTranslate = new(); + List _ediCustomerOrderLines = new(); + List _ediCustomerOrderLineItems = new(); + + List _selectedEdiCustomerOrderLine = new(); + List _selectedEdiCustomerOrderLineItem = new(); + + Grid? _ediCustomerOrderLinesGrid; + Grid? _ediCustomerOrderLineItemsGrid; + + private bool _isVisibleEdiCustomerOrderLine; + private bool _isVisibleEdiCustomerOrderLineItem; + + protected override async Task OnInitializedAsync() + { + EdiCustomerOrderDto? ediCustomerOrder = await EdiCustomerOrderService.GetEdiCustomerOrderAsync(CustomerOrderId); + + _ediCustomerOrder = new List { ediCustomerOrder }; + _ediCustomerOrderLines = ediCustomerOrder?.EdiCustomerOrderLines.ToList() ?? new List(); + _ediCustomerOrderTranslate = new List { ediCustomerOrder?.EdiCustomerOrderTranslates.MaxBy(x => x.CreatedDate) }; + } + + private void SelectedEdiCustomerOrderLineChanged(HashSet obj) + { + _isVisibleEdiCustomerOrderLine = obj.Any(); + _selectedEdiCustomerOrderLine = new List { obj.FirstOrDefault() }; + _ediCustomerOrderLineItems = obj.FirstOrDefault()?.EdiCustomerOrderLineItems.ToList() ?? new List(); + } + + private void SelectedEdiCustomerOrderLineItemChanged(HashSet obj) + { + _isVisibleEdiCustomerOrderLineItem = obj.Any(); + _selectedEdiCustomerOrderLineItem = new List { obj.FirstOrDefault() }; + } +} diff --git a/OrdersManagement/Components/Pages/EdiCustomerOrders.razor b/OrdersManagement/Components/Pages/EdiCustomerOrders.razor new file mode 100644 index 0000000..604f4a6 --- /dev/null +++ b/OrdersManagement/Components/Pages/EdiCustomerOrders.razor @@ -0,0 +1,161 @@ +@page "/edicustomerorders" + +@inject EdiCustomerOrderService EdiCustomerOrderService +@inject NavigationManager NavigationManager +@using SytelineSaAppEfDataModel.Dtos +@using FaKrosnoApi.Dtos +@using OrdersManagement.Dtos +@inherits LayoutComponentBase + +
+

EdiCustomerOrders

+
+
+
+
+ +
+
+
+@if (_isVisible) +{ +
+
+ +
+
+} +
+
+ + + + + @context.CustomerOrderNumber + + + @context.CustomerNumber + + + @context.CustomerSequence + + + @context.CreateDate + + + @context.Gate + + + @context.RecipientCode + + + @context.SellerCode + + + @context.SenderCode + + + @context.BuyerCode + + + +
+ + + + @_modalDto.Body + + + + + + +@code { + Grid? _grid; + private IEnumerable? _ediCustomerOrders; + + private EdiCustomerOrderDto? _selectedEdiCustomerOrder; + + private Modal _modal = default!; + private ModalDto _modalDto = new(null, null); + + private bool _isVisible; + private bool _filter; + + // protected override async Task OnInitializedAsync() + // { + // _ediCustomerOrders = await EdiCustomerOrderService.GetEdiCustomerOrdersAsync() ?? new List(); + // _ediCustomerOrders = _ediCustomerOrders.OrderByDescending(x => x.CreateDate).ToList(); + // } + + private async Task> EdiCustomerOrdersDataProvider(GridDataProviderRequest request) + { + _ediCustomerOrders = await EdiCustomerOrderService.GetEdiCustomerOrdersAsync() ?? new List(); + _ediCustomerOrders = _ediCustomerOrders.OrderByDescending(x => x.CreateDate).ToList(); + + if (_filter) + { + _ediCustomerOrders = _ediCustomerOrders.Where(x => x.Posted == 0).ToList(); + } + + StateHasChanged(); + + return await Task.FromResult(request.ApplyTo(_ediCustomerOrders)); + } + + private void OnRowDoubleClick(GridRowEventArgs obj) + { + string customerOrderId = obj.Item.CustomerOrderNumber; + + NavigationManager.NavigateTo($"/edicustomerorder/{customerOrderId}"); + } + + private async void SendOrderToSyteLine() + { + if (_selectedEdiCustomerOrder == null) return; + + ResponseDto response = await EdiCustomerOrderService.SendOrderToSyteline(_selectedEdiCustomerOrder.CustomerOrderNumber); + + if (response.Status == 1) + { + _modalDto = new ModalDto("Wysłano", $"Zamówienie EDI {_selectedEdiCustomerOrder.CustomerOrderNumber} zostało poprawnie zaksięgowane w Zamówieniach klienta pod numerem '{_selectedEdiCustomerOrder.EdiCustomerOrderTranslates.FirstOrDefault()?.CoCoNum}'"); + await _modal.ShowAsync(); + + _grid?.RefreshDataAsync(); + } + else + { + _modalDto = new ModalDto("Błąd", $"Zamówienie EDI {_selectedEdiCustomerOrder.CustomerOrderNumber} nie zostało poprawnie zaksięgowane w Zamówieniach klienta.{Environment.NewLine}Lista błędów:{Environment.NewLine}{response.Message}"); + await _modal.ShowAsync(); + } + } + + private void SelectedItemsChanged(HashSet obj) + { + _selectedEdiCustomerOrder = obj.FirstOrDefault() ?? null; + _isVisible = _selectedEdiCustomerOrder?.Posted == 0; + } + + private async Task OnHideModalClick() + { + await _modal.HideAsync(); + } + + private void FilterChanged(bool obj) + { + _filter = obj; + _grid?.RefreshDataAsync(); + } + +} diff --git a/OrdersManagement/Components/Pages/Error.razor b/OrdersManagement/Components/Pages/Error.razor new file mode 100644 index 0000000..576cc2d --- /dev/null +++ b/OrdersManagement/Components/Pages/Error.razor @@ -0,0 +1,36 @@ +@page "/Error" +@using System.Diagnostics + +Error + +

Error.

+

An error occurred while processing your request.

+ +@if (ShowRequestId) +{ +

+ Request ID: @RequestId +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

+ +@code{ + [CascadingParameter] + private HttpContext? HttpContext { get; set; } + + private string? RequestId { get; set; } + private bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + protected override void OnInitialized() => + RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier; +} diff --git a/OrdersManagement/Components/Pages/ScheduleOrderDetails.razor b/OrdersManagement/Components/Pages/ScheduleOrderDetails.razor new file mode 100644 index 0000000..6611610 --- /dev/null +++ b/OrdersManagement/Components/Pages/ScheduleOrderDetails.razor @@ -0,0 +1,135 @@ +@page "/details/{ScheduleOrderId:int}" + +@inject ScheduleOrderDetailsService ScheduleOrderDetailsService + +
+
+
+

Indeksy:

+ + + + @context.ID + + + @context.Sc_productCode + + + @context.Sh_productCode + + + @context.Price + + + + @if (_isVisible) + { +
+

Dodatkowe informacje:

+ + + @context.Label:@context.Value + + +
+ } +
+
+
+ @if (_isVisible) + { +
+

Harmonogramy:

+ + + + + @context.ID + + + @context.DateFrom + + + @context.DateTo + + + @context.Qty + + + +
+ @if (_isVisibleDetailDetail) + { +
+

Dodatkowe informacje:

+ + + @context.Label:@context.Value + + +
+ } + } +
+
+
+
+ +@code { + [Parameter] + public int ScheduleOrderId { get; set; } + private bool _isVisible; + private bool _isVisibleDetailDetail; + + Grid? _grid; + Grid? _detailDetailsGrid; + + private IEnumerable? _scheduleOrderDetails; + private IEnumerable? _scheduleOrderDetailsDetails; + + private List? _scheduleOrderDetailMiscs; + private List? _scheduleOrderDetailDetailMiscs; + + private async Task> ScheduleOrderDetailsDataProvider(GridDataProviderRequest request) + { + _scheduleOrderDetails = await ScheduleOrderDetailsService.GetScheduleOrderDetails(ScheduleOrderId) ?? new List(); + StateHasChanged(); + + return await Task.FromResult(request.ApplyTo(_scheduleOrderDetails)); + } + + private void SelectedItemChanged(HashSet obj) + { + _isVisible = obj.Any(); + _scheduleOrderDetailMiscs = obj.FirstOrDefault()?.ScheduleOrderDetailMiscs.ToList(); + _scheduleOrderDetailsDetails = obj.FirstOrDefault()?.ScheduleOrderDetailDetails.ToList(); + } + + private void SelectedDetailDetailChanged(HashSet obj) + { + _isVisibleDetailDetail = obj.Any(); + _scheduleOrderDetailDetailMiscs = obj.FirstOrDefault()?.ScheduleOrderDetailDetailMiscs.ToList(); + } + +} diff --git a/OrdersManagement/Components/Pages/ScheduleOrders.razor b/OrdersManagement/Components/Pages/ScheduleOrders.razor new file mode 100644 index 0000000..0f121c2 --- /dev/null +++ b/OrdersManagement/Components/Pages/ScheduleOrders.razor @@ -0,0 +1,62 @@ +@page "/" + +@inject ScheduleOrderService ScheduleOrderService +@inject NavigationManager NavigationManager +@inherits LayoutComponentBase + +

ScheduleOrders

+ + + + + + @context.ID + + + @context.OrderID + + + @context.PONum + + + @context.Recipient.RecipientCode + + + @context.Recipient.Purchaser.PurchaserCode + + + @context.LastUpdateDate + + + + +@code { + Grid? _grid; + private IEnumerable? _scheduleOrders; + + private async Task> ScheduleOrdersDataProvider(GridDataProviderRequest request) + { + _scheduleOrders = await ScheduleOrderService.GetScheduleOrdersAsync() ?? new List(); + _scheduleOrders = _scheduleOrders.OrderByDescending(x => x.LastUpdateDate).ToList(); + StateHasChanged(); + + return await Task.FromResult(request.ApplyTo(_scheduleOrders)); + } + + private void OnRowDoubleClick(GridRowEventArgs obj) + { + int scheduleOrderId = obj.Item.ID; + + NavigationManager.NavigateTo($"/details/{scheduleOrderId}"); + } +} diff --git a/OrdersManagement/Components/Routes.razor b/OrdersManagement/Components/Routes.razor new file mode 100644 index 0000000..2ec0ad0 --- /dev/null +++ b/OrdersManagement/Components/Routes.razor @@ -0,0 +1,7 @@ +@using OrdersManagement.Components.Layout + + + + + + diff --git a/OrdersManagement/Components/_Imports.razor b/OrdersManagement/Components/_Imports.razor new file mode 100644 index 0000000..5b8f82c --- /dev/null +++ b/OrdersManagement/Components/_Imports.razor @@ -0,0 +1,11 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using static Microsoft.AspNetCore.Components.Web.RenderMode +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using BlazorBootstrap; +@using FaKrosnoEfDataModel.Dtos +@using OrdersManagement.Services diff --git a/OrdersManagement/Dtos/ModalDto.cs b/OrdersManagement/Dtos/ModalDto.cs new file mode 100644 index 0000000..49d1da9 --- /dev/null +++ b/OrdersManagement/Dtos/ModalDto.cs @@ -0,0 +1,8 @@ +namespace OrdersManagement.Dtos +{ + public class ModalDto(string? title, string? body) + { + public string? Title { get; set; } = title; + public string? Body { get; set; } = body; + } +} diff --git a/OrdersManagement/Dtos/ResponseDto.cs b/OrdersManagement/Dtos/ResponseDto.cs new file mode 100644 index 0000000..94e4aab --- /dev/null +++ b/OrdersManagement/Dtos/ResponseDto.cs @@ -0,0 +1,16 @@ +namespace FaKrosnoApi.Dtos +{ + public class ResponseDto + { + public int Status { get; set; } + public string Identifier { get; set; } + public string? Message { get; set; } + + public ResponseDto(int status, string identifier, string? message) + { + Status = status; + Identifier = identifier; + Message = message; + } + } +} diff --git a/OrdersManagement/OrdersManagement.csproj b/OrdersManagement/OrdersManagement.csproj new file mode 100644 index 0000000..bab3c84 --- /dev/null +++ b/OrdersManagement/OrdersManagement.csproj @@ -0,0 +1,36 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + + true + + + true + + + true + + + true + + + true + + + + diff --git a/OrdersManagement/Program.cs b/OrdersManagement/Program.cs new file mode 100644 index 0000000..3445df7 --- /dev/null +++ b/OrdersManagement/Program.cs @@ -0,0 +1,39 @@ +using Microsoft.AspNetCore.Routing.Constraints; +using OrdersManagement.Components; +using OrdersManagement.Services; + + var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddBlazorBootstrap(); + +string apiUrl = builder.Configuration["ApiUrl"] ?? "http://localhost:5000"; // Ustawienie na adres twojego API +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(apiUrl) }); + +// Add services to the container. +builder.Services.AddRazorComponents() + .AddInteractiveServerComponents(); + +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error", createScopeForErrors: true); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); +app.UseAntiforgery(); + +app.MapRazorComponents() + .AddInteractiveServerRenderMode(); + +app.Run(); + diff --git a/OrdersManagement/Properties/launchSettings.json b/OrdersManagement/Properties/launchSettings.json new file mode 100644 index 0000000..d7a0e28 --- /dev/null +++ b/OrdersManagement/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:61370", + "sslPort": 44319 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5295", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7215;http://localhost:5295", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } + } diff --git a/OrdersManagement/Services/EdiCustomerOrderService.cs b/OrdersManagement/Services/EdiCustomerOrderService.cs new file mode 100644 index 0000000..c104485 --- /dev/null +++ b/OrdersManagement/Services/EdiCustomerOrderService.cs @@ -0,0 +1,41 @@ +using FaKrosnoApi.Dtos; +using SytelineSaAppEfDataModel.Dtos; + +namespace OrdersManagement.Services +{ + public class EdiCustomerOrderService(HttpClient httpClient) + { + public async Task?> GetEdiCustomerOrdersAsync() + { + return await httpClient.GetFromJsonAsync>("api/EdiCustomerOrders"); + } + + public async Task GetEdiCustomerOrderAsync(string customerOrderNumber) + { + return await httpClient.GetFromJsonAsync( + $"api/EdiCustomerOrders/by-order-number/?customerOrderNumber={Uri.EscapeDataString(customerOrderNumber)}"); + } + + public async Task SendOrderToSyteline(string customerOrderNumber) + { + HttpResponseMessage responseMessage = await httpClient.PostAsync( + $"api/EdiCustomerOrders/send-to-syteline?customerOrderNumber={Uri.EscapeDataString(customerOrderNumber)}", null); + + if (responseMessage.IsSuccessStatusCode) + { + return new ResponseDto(1, customerOrderNumber, null); + } + + string? errorMessage = null; + IEnumerable? logs = await httpClient.GetFromJsonAsync>( + $"api/ErrorLog/by-order-number/?customerOrderNumber={Uri.EscapeDataString(customerOrderNumber)}"); + + if (logs != null) + { + errorMessage = string.Join("\r\n", logs.Select(x => x.ErrMsg)); + } + + return new ResponseDto(0, customerOrderNumber, errorMessage); + } + } +} diff --git a/OrdersManagement/Services/ScheduleOrderDetailsService.cs b/OrdersManagement/Services/ScheduleOrderDetailsService.cs new file mode 100644 index 0000000..94114cc --- /dev/null +++ b/OrdersManagement/Services/ScheduleOrderDetailsService.cs @@ -0,0 +1,13 @@ +using FaKrosnoEfDataModel.Dtos; + +namespace OrdersManagement.Services +{ + public class ScheduleOrderDetailsService(HttpClient httpClient) + { + public async Task?> GetScheduleOrderDetails(int scheduleOrderId) + { + return await httpClient.GetFromJsonAsync>( + $"api/scheduleOrderDetails/order/{scheduleOrderId}"); + } + } +} diff --git a/OrdersManagement/Services/ScheduleOrderService.cs b/OrdersManagement/Services/ScheduleOrderService.cs new file mode 100644 index 0000000..8b1b041 --- /dev/null +++ b/OrdersManagement/Services/ScheduleOrderService.cs @@ -0,0 +1,12 @@ +using FaKrosnoEfDataModel.Dtos; + +namespace OrdersManagement.Services +{ + public class ScheduleOrderService(HttpClient httpClient) + { + public async Task?> GetScheduleOrdersAsync() + { + return await httpClient.GetFromJsonAsync>("api/ScheduleOrders"); + } + } +} diff --git a/OrdersManagement/appsettings.Development.json b/OrdersManagement/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/OrdersManagement/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/OrdersManagement/appsettings.json b/OrdersManagement/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/OrdersManagement/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/OrdersManagement/wwwroot/app.css b/OrdersManagement/wwwroot/app.css new file mode 100644 index 0000000..5588cc1 --- /dev/null +++ b/OrdersManagement/wwwroot/app.css @@ -0,0 +1,51 @@ +html, body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +a, .btn-link { + color: #006bb7; +} + +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} + +.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { + box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; +} + +.content { + padding-top: 1.1rem; +} + +h1:focus { + outline: none; +} + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid #e50000; +} + +.validation-message { + color: #e50000; +} + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + + .blazor-error-boundary::after { + content: "An error has occurred." + } + +.darker-border-checkbox.form-check-input { + border-color: #929292; +} diff --git a/SytelineSaAppEfDataModel/Dtos/CustomerOrderDto.cs b/SytelineSaAppEfDataModel/Dtos/CustomerOrderDto.cs new file mode 100644 index 0000000..cced078 --- /dev/null +++ b/SytelineSaAppEfDataModel/Dtos/CustomerOrderDto.cs @@ -0,0 +1,125 @@ +namespace SytelineSaAppEfDataModel.Dtos +{ + public class CustomerOrderDto + { + public string Type { get; set; } + public string CoNum { get; set; } + public string EstNum { get; set; } + public string CustNum { get; set; } + public int CustSeq { get; set; } + public string Contact { get; set; } + public string Phone { get; set; } + public string CustPo { get; set; } + public DateTime OrderDate { get; set; } + public string TakenBy { get; set; } + public string TermsCode { get; set; } + public string ShipCode { get; set; } + public decimal? Price { get; set; } + public decimal? Weight { get; set; } + public short? QtyPackages { get; set; } + public decimal? Freight { get; set; } + public decimal? MiscCharges { get; set; } + public decimal? PrepaidAmt { get; set; } + public decimal? SalesTax { get; set; } + public string Stat { get; set; } + public decimal? Cost { get; set; } + public DateTime? CloseDate { get; set; } + public decimal? FreightT { get; set; } + public decimal? MChargesT { get; set; } + public decimal? PrepaidT { get; set; } + public decimal? SalesTaxT { get; set; } + public string Slsman { get; set; } + public DateTime? EffDate { get; set; } + public DateTime? ExpDate { get; set; } + public string Whse { get; set; } + public decimal? SalesTax2 { get; set; } + public decimal? SalesTaxT2 { get; set; } + public bool? EdiOrder { get; set; } + public string TransNat { get; set; } + public string ProcessInd { get; set; } + public string Delterm { get; set; } + public bool? UseExchRate { get; set; } + public string TaxCode1 { get; set; } + public string TaxCode2 { get; set; } + public string FrtTaxCode1 { get; set; } + public string FrtTaxCode2 { get; set; } + public string MscTaxCode1 { get; set; } + public string MscTaxCode2 { get; set; } + public string DiscountType { get; set; } + public decimal? DiscAmount { get; set; } + public decimal? Disc { get; set; } + public string Pricecode { get; set; } + public bool? ShipPartial { get; set; } + public bool? ShipEarly { get; set; } + public decimal? MatlCostT { get; set; } + public decimal? LbrCostT { get; set; } + public decimal? FovhdCostT { get; set; } + public decimal? VovhdCostT { get; set; } + public decimal? OutCostT { get; set; } + public string EndUserType { get; set; } + public decimal? ExchRate { get; set; } + public bool? FixedRate { get; set; } + public string OrigSite { get; set; } + public string LcrNum { get; set; } + public string EdiType { get; set; } + public bool? Invoiced { get; set; } + public bool? CreditHold { get; set; } + public DateTime? CreditHoldDate { get; set; } + public string CreditHoldReason { get; set; } + public string CreditHoldUser { get; set; } + public bool? SyncReqd { get; set; } + public DateTime? ProjectedDate { get; set; } + public string OrderSource { get; set; } + public string ConvertType { get; set; } + public bool? ApsPullUp { get; set; } + public bool? Consolidate { get; set; } + public string InvFreq { get; set; } + public bool? Summarize { get; set; } + public bool NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public bool? Einvoice { get; set; } + public string Charfld1 { get; set; } + public string Charfld2 { get; set; } + public string Charfld3 { get; set; } + public DateTime? Datefld { get; set; } + public decimal? Decifld1 { get; set; } + public decimal? Decifld2 { get; set; } + public decimal? Decifld3 { get; set; } + public bool? Logifld { get; set; } + public string AckStat { get; set; } + public string ConfigId { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public bool InWorkflow { get; set; } + public bool? IncludeTaxInPrice { get; set; } + public string TransNat2 { get; set; } + public string ApplyToInvNum { get; set; } + public string ExportType { get; set; } + public string ExternalConfirmationRef { get; set; } + public bool IsExternal { get; set; } + public string ProspectId { get; set; } + public string OppId { get; set; } + public string LeadId { get; set; } + public short? DaysShippedBeforeDueDateTolerance { get; set; } + public short? DaysShippedAfterDueDateTolerance { get; set; } + public decimal? ShippedOverOrderedQtyTolerance { get; set; } + public decimal? ShippedUnderOrderedQtyTolerance { get; set; } + public bool Consignment { get; set; } + public short? Priority { get; set; } + public string DemandingSite { get; set; } + public string DemandingSitePoNum { get; set; } + public string Uf_FKR_CoContract { get; set; } + public DateTime? Uf_BPX_DeliveryDate { get; set; } + public string Uf_FKR_EDI_CustName { get; set; } + public string Uf_FKR_EDI_Gate { get; set; } + public string Uf_FKR_EDI_RecipientCode { get; set; } + public string Uf_FKR_EDI_SellerCode { get; set; } + public string Uf_FKR_EDI_SenderCode { get; set; } + public string Uf_DocType { get; set; } + public string Uf_FKR_EDI_BuyerCode { get; set; } + + public IEnumerable CustomerOrderLines { get; set; } = new List(); + } +} diff --git a/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineDto.cs b/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineDto.cs new file mode 100644 index 0000000..ff3e941 --- /dev/null +++ b/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineDto.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Dtos +{ + public class CustomerOrderLineDto + { + public string CoNum { get; set; } + public short CoLine { get; set; } + public string Item { get; set; } + public string CustItem { get; set; } + public string FeatStr { get; set; } + public decimal BlanketQty { get; set; } + public DateTime? EffDate { get; set; } + public DateTime? ExpDate { get; set; } + public decimal? ContPrice { get; set; } + public string Stat { get; set; } + public DateTime? PromiseDate { get; set; } + public string Pricecode { get; set; } + public string UM { get; set; } + public decimal BlanketQtyConv { get; set; } + public decimal? ContPriceConv { get; set; } + public string ShipSite { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string Description { get; set; } + public string ConfigId { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public byte PrintKitComponents { get; set; } + public string NonInvAcct { get; set; } + public string NonInvAcctUnit1 { get; set; } + public string NonInvAcctUnit2 { get; set; } + public string NonInvAcctUnit3 { get; set; } + public string NonInvAcctUnit4 { get; set; } + public decimal? CostConv { get; set; } + public short? DaysShippedBeforeDueDateTolerance { get; set; } + public short? DaysShippedAfterDueDateTolerance { get; set; } + public decimal? ShippedOverOrderedQtyTolerance { get; set; } + public decimal? ShippedUnderOrderedQtyTolerance { get; set; } + public string ManufacturerId { get; set; } + public string ManufacturerItem { get; set; } + public string Uf_FKR_EDI_BLN_Address { get; set; } + public string Uf_FKR_EDI_BLN_BoxType { get; set; } + public string Uf_FKR_EDI_BLN_FinalDestination { get; set; } + public int? Uf_FKR_EDI_BLN_QtyPerBox { get; set; } + + public IEnumerable CustomerOrderLineItems { get; set; } = + new List(); + } +} diff --git a/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineItemDto.cs b/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineItemDto.cs new file mode 100644 index 0000000..54074a6 --- /dev/null +++ b/SytelineSaAppEfDataModel/Dtos/CustomerOrderLineItemDto.cs @@ -0,0 +1,138 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Dtos +{ + public class CustomerOrderLineItemDto + { + public string CoNum { get; set; } + public short CoLine { get; set; } + public short CoRelease { get; set; } + public string Item { get; set; } + public decimal QtyOrdered { get; set; } + public decimal QtyReady { get; set; } + public decimal QtyShipped { get; set; } + public decimal QtyPacked { get; set; } + public decimal Disc { get; set; } + public decimal Cost { get; set; } + public decimal Price { get; set; } + public string RefType { get; set; } + public string RefNum { get; set; } + public short? RefLineSuf { get; set; } + public short? RefRelease { get; set; } + public DateTime? DueDate { get; set; } + public DateTime? ShipDate { get; set; } + public decimal BrkQty1 { get; set; } + public decimal BrkQty2 { get; set; } + public decimal BrkQty3 { get; set; } + public decimal BrkQty4 { get; set; } + public decimal BrkQty5 { get; set; } + public byte Reprice { get; set; } + public string CustItem { get; set; } + public decimal QtyInvoiced { get; set; } + public decimal QtyReturned { get; set; } + public decimal CgsTotal { get; set; } + public string FeatStr { get; set; } + public string Stat { get; set; } + public string CustNum { get; set; } + public int CustSeq { get; set; } + public decimal? PrgBillTot { get; set; } + public decimal? PrgBillApp { get; set; } + public DateTime? ReleaseDate { get; set; } + public DateTime? PromiseDate { get; set; } + public string Whse { get; set; } + public string WksBasis { get; set; } + public decimal? WksValue { get; set; } + public string CommCode { get; set; } + public string TransNat { get; set; } + public string ProcessInd { get; set; } + public string Delterm { get; set; } + public decimal? UnitWeight { get; set; } + public string Origin { get; set; } + public int? ConsNum { get; set; } + public string TaxCode1 { get; set; } + public string TaxCode2 { get; set; } + public decimal? ExportValue { get; set; } + public string EcCode { get; set; } + public string Transport { get; set; } + public DateTime? PickDate { get; set; } + public string Pricecode { get; set; } + public string UM { get; set; } + public decimal QtyOrderedConv { get; set; } + public decimal PriceConv { get; set; } + public string CoCustNum { get; set; } + public byte? Packed { get; set; } + public byte? Bol { get; set; } + public decimal QtyRsvd { get; set; } + public decimal MatlCost { get; set; } + public decimal LbrCost { get; set; } + public decimal FovhdCost { get; set; } + public decimal VovhdCost { get; set; } + public decimal OutCost { get; set; } + public decimal CgsTotalMatl { get; set; } + public decimal CgsTotalLbr { get; set; } + public decimal CgsTotalFovhd { get; set; } + public decimal CgsTotalVovhd { get; set; } + public decimal CgsTotalOut { get; set; } + public decimal CostConv { get; set; } + public decimal MatlCostConv { get; set; } + public decimal LbrCostConv { get; set; } + public decimal FovhdCostConv { get; set; } + public decimal VovhdCostConv { get; set; } + public decimal OutCostConv { get; set; } + public string ShipSite { get; set; } + public byte? SyncReqd { get; set; } + public string CoOrigSite { get; set; } + public string CustPo { get; set; } + public string RmaNum { get; set; } + public short? RmaLine { get; set; } + public DateTime? ProjectedDate { get; set; } + public byte Consolidate { get; set; } + public string InvFreq { get; set; } + public byte Summarize { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string Description { get; set; } + public string ConfigId { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public string TransNat2 { get; set; } + public decimal SupplQtyConvFactor { get; set; } + public byte PrintKitComponents { get; set; } + public string ExternalReservationRef { get; set; } + public string NonInvAcct { get; set; } + public string NonInvAcctUnit1 { get; set; } + public string NonInvAcctUnit2 { get; set; } + public string NonInvAcctUnit3 { get; set; } + public string NonInvAcctUnit4 { get; set; } + public short? DaysShippedBeforeDueDateTolerance { get; set; } + public short? DaysShippedAfterDueDateTolerance { get; set; } + public decimal? ShippedOverOrderedQtyTolerance { get; set; } + public decimal? ShippedUnderOrderedQtyTolerance { get; set; } + public short? Priority { get; set; } + public byte InvoiceHold { get; set; } + public string ManufacturerId { get; set; } + public string ManufacturerItem { get; set; } + public decimal QtyPicked { get; set; } + public string Uf_ZPL_VATRegisterCode { get; set; } + public Guid? Uf_FKR_EDI_EdiCoItemRowPointer { get; set; } + public short? Uf_IMP_CoLineOrginal { get; set; } + public decimal? Uf_IMP_QtyOrdered { get; set; } + public decimal? Uf_IMP_QtyOrginal { get; set; } + public byte? Uf_IMP_SplitCoLine { get; set; } + public byte? Uf_IMP_SplitCoLineChange { get; set; } + public string Uf_FKR_EDI_ITEM_DeliveryCallNum { get; set; } + public string Uf_FKR_EDI_ITEM_RoutingCode { get; set; } + public char? Uf_pci_code { get; set; } + public string Uf_LOC_11_UnloadingPoint { get; set; } + public string Uf_LOC_159_DestinationPoint { get; set; } + public string Uf_Status { get; set; } + public string Uf_FKR_EDI_ITEM_PalletCode { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Dtos/DtoBase.cs b/SytelineSaAppEfDataModel/Dtos/DtoBase.cs new file mode 100644 index 0000000..fc0407d --- /dev/null +++ b/SytelineSaAppEfDataModel/Dtos/DtoBase.cs @@ -0,0 +1,6 @@ +namespace SytelineSaAppEfDataModel.Dtos +{ + public class DtoBase + { + } +} diff --git a/SytelineSaAppEfDataModel/Dtos/EdiCustomerLineItemDto.cs b/SytelineSaAppEfDataModel/Dtos/EdiCustomerLineItemDto.cs new file mode 100644 index 0000000..e624f66 --- /dev/null +++ b/SytelineSaAppEfDataModel/Dtos/EdiCustomerLineItemDto.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Dtos +{ + public class EdiCustomerOrderLineItemDto + { + public string TransactionCode { get; set; } + public DateTime? ReceivedDate { get; set; } + public byte? Posted { get; set; } + public DateTime? PostedDate { get; set; } + public DateTime? ExtendedDate { get; set; } + public short? ErrorMessage { get; set; } + public byte? Override { get; set; } + public byte? Edi { get; set; } + public byte? Ack { get; set; } + public string AckNumber { get; set; } + public string AckType { get; set; } + public DateTime? AckDate { get; set; } + public string SymCustomerOrderNumber { get; set; } + public byte? QtyChanged { get; set; } + public byte? DateChanged { get; set; } + public byte? PriceChanged { get; set; } + public string CustomerOrderNumber { get; set; } + public int CustomerOrderLine { get; set; } + public int CustomerOrderRelease { get; set; } + public string Item { get; set; } + public decimal? QtyOrdered { get; set; } + public decimal? QtyReady { get; set; } + public decimal? QtyShipped { get; set; } + public decimal? QtyPacked { get; set; } + public decimal? Discount { get; set; } + public decimal? Cost { get; set; } + public decimal? Price { get; set; } + public string RefType { get; set; } + public string RefNumber { get; set; } + public short? RefLineSuf { get; set; } + public short? RefRelease { get; set; } + public DateTime? DueDate { get; set; } + public DateTime? ShipDate { get; set; } + public decimal? BrkQtyOne { get; set; } + public decimal? BrkQtyTwo { get; set; } + public decimal? BrkQtyThree { get; set; } + public decimal? BrkQtyFour { get; set; } + public decimal? BrkQtyFive { get; set; } + public byte? Reprice { get; set; } + public string CustomerItem { get; set; } + public decimal? QtyInvoiced { get; set; } + public decimal? QtyReturned { get; set; } + public decimal? CgsTotal { get; set; } + public string FeatStr { get; set; } + public string Status { get; set; } + public string CustomerNumber { get; set; } + public int? CustomerSequence { get; set; } + public decimal? PrgBillTot { get; set; } + public decimal? PrgBillApp { get; set; } + public DateTime? ReleaseDate { get; set; } + public DateTime? PromiseDate { get; set; } + public string Warehouse { get; set; } + public string WksBasis { get; set; } + public decimal? WksValue { get; set; } + public string CommCode { get; set; } + public string TransNat { get; set; } + public string ProcessInd { get; set; } + public string DelTerm { get; set; } + public decimal? UnitWeight { get; set; } + public string Origin { get; set; } + public int? ConsNumber { get; set; } + public string TaxCodeOne { get; set; } + public string TaxCodeTwo { get; set; } + public decimal? ExportValue { get; set; } + public string EcCode { get; set; } + public string Transport { get; set; } + public DateTime? PickupDate { get; set; } + public string PriceCode { get; set; } + public string Uom { get; set; } + public decimal? QtyOrderedReleased { get; set; } + public decimal? PriceReleased { get; set; } + public string CustomerOrderCustomerNumber { get; set; } + public byte? Packed { get; set; } + public byte? Bol { get; set; } + public decimal? QtyBco { get; set; } + public string BcoCode { get; set; } + public string ExternalRef { get; set; } + public string CustomerPoNumber { get; set; } + public string NonApplyData { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string Description { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public string TransNatTwo { get; set; } + public decimal SupplyQtyConvFactor { get; set; } + public string UfFkrEdiAddIntDest { get; set; } + public string UfFkrEdiCustPoLineNum { get; set; } + public string UfFkrEdiPlaceOrPortDischarge { get; set; } + public string RoutingCode { get; set; } + public string DeliveryCallNumber { get; set; } + public string UnloadingPoint { get; set; } + public string DestinationPoint { get; set; } + public string NewStatus { get; set; } + public string PalletCode { get; set; } + public string PalletNumber { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderDto.cs b/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderDto.cs new file mode 100644 index 0000000..8b5cbc9 --- /dev/null +++ b/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderDto.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Dtos +{ + public class EdiCustomerOrderDto : DtoBase + { + public string TransactionCode { get; set; } + public string TpCode { get; set; } + public DateTime? RecivedDate { get; set; } + public byte? Posted { get; set; } + public DateTime? PostedDate { get; set; } + public DateTime? ExtendedDate { get; set; } + public short? ErrorMessage { get; set; } + public byte? Override { get; set; } + public byte? Ack { get; set; } + public string AckNumber { get; set; } + public int? AckSequence { get; set; } + public string AckType { get; set; } + public DateTime? AckDate { get; set; } + public string SymbolicCustomerOrderNumber { get; set; } + public decimal? BlanketDollar { get; set; } + public string Type { get; set; } + public string CustomerOrderNumber { get; set; } + public string EstimatedNumber { get; set; } + public string CustomerNumber { get; set; } + public int? CustomerSequence { get; set; } + public string Contact { get; set; } + public string Phone { get; set; } + public string CustomerPoNumber { get; set; } + public DateTime? OrderDate { get; set; } + public string TakenBy { get; set; } + public string TermsCode { get; set; } + public string ShipCode { get; set; } + public decimal? Price { get; set; } + public decimal? Weight { get; set; } + public short? QtyPackages { get; set; } + public decimal? Freight { get; set; } + public decimal? MiscCharges { get; set; } + public decimal? PrepaidAmount { get; set; } + public decimal? SalesTax { get; set; } + public string Status { get; set; } + public decimal? Cost { get; set; } + public DateTime? CloseDate { get; set; } + public decimal? FreightT { get; set; } + public decimal? MchargesT { get; set; } + public decimal? PrepaidT { get; set; } + public decimal? SalesTaxT { get; set; } + public string Salesman { get; set; } + public DateTime? EffectiveDate { get; set; } + public DateTime? ExpirationDate { get; set; } + public string Warehouse { get; set; } + public decimal? SalesTaxTwo { get; set; } + public decimal? SalesTaxTwoT { get; set; } + public string CharFieldOne { get; set; } + public string CharFieldTwo { get; set; } + public string CharFieldThree { get; set; } + public DateTime? DateField { get; set; } + public decimal? DecimalFieldOne { get; set; } + public decimal? DecimalFieldTwo { get; set; } + public decimal? DecimalFieldThree { get; set; } + public byte? LogiField { get; set; } + public byte? EdiOrder { get; set; } + public string TransactionNat { get; set; } + public string ProcessInd { get; set; } + public string DelTerm { get; set; } + public byte? UseExchangeRate { get; set; } + public string TaxCodeOne { get; set; } + public string TaxCodeTwo { get; set; } + public string FreightTaxCodeOne { get; set; } + public string FreightTaxCodeTwo { get; set; } + public string MscTaxCodeOne { get; set; } + public string MscTaxCodeTwo { get; set; } + public decimal? Discount { get; set; } + public string PriceCode { get; set; } + public byte? ShipPartial { get; set; } + public byte? ShipEarly { get; set; } + public string NonApplyData { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public string DiscountType { get; set; } + public decimal? DiscountAmount { get; set; } + public string TransNatTwo { get; set; } + public string UfFkrEdiMessageRefNum { get; set; } + public string UfFkrEdiConsigneeAddress { get; set; } + public string UfFkrEdiConsigneeName { get; set; } + public string UfFkrEdiFileName { get; set; } + public string UfFkrEdiBuyerDunsNumber { get; set; } + public string Gate { get; set; } + public string CustomerName { get; set; } + public string RecipientCode { get; set; } + public string SenderCode { get; set; } + public string SellerCode { get; set; } + public string DocType { get; set; } + public string BuyerCode { get; set; } + + public IEnumerable EdiCustomerOrderLines { get; set; } = new List(); + public IEnumerable EdiCustomerOrderTranslates { get; set; } = new List(); + } +} diff --git a/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderLineDto.cs b/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderLineDto.cs new file mode 100644 index 0000000..dbd1e3b --- /dev/null +++ b/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderLineDto.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Dtos +{ + public class EdiCustomerOrderLineDto + { + public string CustomerOrderNumber { get; set; } + public int CustomerOrderLine { get; set; } + public string Item { get; set; } + public string CustomerItemNumber { get; set; } + public string FeatStr { get; set; } + public decimal? BlanketQty { get; set; } + public DateTime? EffectiveDate { get; set; } + public DateTime? ExpirationDate { get; set; } + public decimal? ContPrice { get; set; } + public string Status { get; set; } + public DateTime? PromiseDate { get; set; } + public string PriceCode { get; set; } + public string Uom { get; set; } + public decimal? BlanketQtyReleased { get; set; } + public decimal? ContPriceReleased { get; set; } + public decimal? QtySent { get; set; } + public string SentCode { get; set; } + public string NonAppliedData { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string Description { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public string BoxType { get; set; } + public string Address { get; set; } + public string FinalDestination { get; set; } + public int? QtyPerBox { get; set; } + + public IEnumerable EdiCustomerOrderLineItems { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderTranslateDto.cs b/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderTranslateDto.cs new file mode 100644 index 0000000..bc1e487 --- /dev/null +++ b/SytelineSaAppEfDataModel/Dtos/EdiCustomerOrderTranslateDto.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Dtos +{ + public class EdiCustomerOrderTranslateDto + { + public int Id { get; set; } + public byte CoEdiOrder { get; set; } + public Guid CoRowPointer { get; set; } + public string CoCoNum { get; set; } + public string CoType { get; set; } + public string CoTakenBy { get; set; } + public string EdiCoCoNum { get; set; } + public int OrdersCount { get; set; } + public bool OrderFound { get; set; } + public DateTime CreatedDate { get; set; } + public string FoundNumbers { get; set; } + public int ScheduleOrderId { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Dtos/ErrorLogDto.cs b/SytelineSaAppEfDataModel/Dtos/ErrorLogDto.cs new file mode 100644 index 0000000..6e2fd74 --- /dev/null +++ b/SytelineSaAppEfDataModel/Dtos/ErrorLogDto.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Dtos +{ + public class ErrorLogDto + { + public string TrxNum { get; set; } + public short Seq { get; set; } + public int LineNum { get; set; } + public int ReleaseNum { get; set; } + public DateTime? ErrDate { get; set; } + public short? ErrNum { get; set; } + public string ErrMsg { get; set; } + public string TrxCode { get; set; } + public bool NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public bool InWorkflow { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Entities/CustomerOrder.cs b/SytelineSaAppEfDataModel/Entities/CustomerOrder.cs new file mode 100644 index 0000000..e68b168 --- /dev/null +++ b/SytelineSaAppEfDataModel/Entities/CustomerOrder.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Entities +{ + public class CustomerOrder + { + public string Type { get; set; } + public string CoNum { get; set; } + public string EstNum { get; set; } + public string CustNum { get; set; } + public int CustSeq { get; set; } + public string Contact { get; set; } + public string Phone { get; set; } + public string CustPo { get; set; } + public DateTime OrderDate { get; set; } + public string TakenBy { get; set; } + public string TermsCode { get; set; } + public string ShipCode { get; set; } + public decimal? Price { get; set; } + public decimal? Weight { get; set; } + public short? QtyPackages { get; set; } + public decimal? Freight { get; set; } + public decimal? MiscCharges { get; set; } + public decimal? PrepaidAmt { get; set; } + public decimal? SalesTax { get; set; } + public string Stat { get; set; } + public decimal? Cost { get; set; } + public DateTime? CloseDate { get; set; } + public decimal? FreightT { get; set; } + public decimal? MChargesT { get; set; } + public decimal? PrepaidT { get; set; } + public decimal? SalesTaxT { get; set; } + public string Slsman { get; set; } + public DateTime? EffDate { get; set; } + public DateTime? ExpDate { get; set; } + public string Whse { get; set; } + public decimal? SalesTax2 { get; set; } + public decimal? SalesTaxT2 { get; set; } + public byte? EdiOrder { get; set; } + public string TransNat { get; set; } + public string ProcessInd { get; set; } + public string Delterm { get; set; } + public byte? UseExchRate { get; set; } + public string TaxCode1 { get; set; } + public string TaxCode2 { get; set; } + public string FrtTaxCode1 { get; set; } + public string FrtTaxCode2 { get; set; } + public string MscTaxCode1 { get; set; } + public string MscTaxCode2 { get; set; } + public string DiscountType { get; set; } + public decimal? DiscAmount { get; set; } + public decimal? Disc { get; set; } + public string Pricecode { get; set; } + public byte? ShipPartial { get; set; } + public byte? ShipEarly { get; set; } + public decimal? MatlCostT { get; set; } + public decimal? LbrCostT { get; set; } + public decimal? FovhdCostT { get; set; } + public decimal? VovhdCostT { get; set; } + public decimal? OutCostT { get; set; } + public string EndUserType { get; set; } + public decimal? ExchRate { get; set; } + public byte? FixedRate { get; set; } + public string OrigSite { get; set; } + public string LcrNum { get; set; } + public string EdiType { get; set; } + public byte? Invoiced { get; set; } + public byte? CreditHold { get; set; } + public DateTime? CreditHoldDate { get; set; } + public string CreditHoldReason { get; set; } + public string CreditHoldUser { get; set; } + public byte? SyncReqd { get; set; } + public DateTime? ProjectedDate { get; set; } + public string OrderSource { get; set; } + public string ConvertType { get; set; } + public byte? ApsPullUp { get; set; } + public byte? Consolidate { get; set; } + public string InvFreq { get; set; } + public byte? Summarize { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public byte? Einvoice { get; set; } + public string Charfld1 { get; set; } + public string Charfld2 { get; set; } + public string Charfld3 { get; set; } + public DateTime? Datefld { get; set; } + public decimal? Decifld1 { get; set; } + public decimal? Decifld2 { get; set; } + public decimal? Decifld3 { get; set; } + public byte? Logifld { get; set; } + public string AckStat { get; set; } + public string ConfigId { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public byte? IncludeTaxInPrice { get; set; } + public string TransNat2 { get; set; } + public string ApplyToInvNum { get; set; } + public string ExportType { get; set; } + public string ExternalConfirmationRef { get; set; } + public byte IsExternal { get; set; } + public string ProspectId { get; set; } + public string OppId { get; set; } + public string LeadId { get; set; } + public short? DaysShippedBeforeDueDateTolerance { get; set; } + public short? DaysShippedAfterDueDateTolerance { get; set; } + public decimal? ShippedOverOrderedQtyTolerance { get; set; } + public decimal? ShippedUnderOrderedQtyTolerance { get; set; } + public byte Consignment { get; set; } + public short? Priority { get; set; } + public string DemandingSite { get; set; } + public string DemandingSitePoNum { get; set; } + public string Uf_FKR_CoContract { get; set; } + public DateTime? Uf_BPX_DeliveryDate { get; set; } + public string Uf_FKR_EDI_CustName { get; set; } + public string Uf_FKR_EDI_Gate { get; set; } + public string Uf_FKR_EDI_RecipientCode { get; set; } + public string Uf_FKR_EDI_SellerCode { get; set; } + public string Uf_FKR_EDI_SenderCode { get; set; } + public string Uf_DocType { get; set; } + public string Uf_FKR_EDI_BuyerCode { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Entities/CustomerOrderLine.cs b/SytelineSaAppEfDataModel/Entities/CustomerOrderLine.cs new file mode 100644 index 0000000..4217082 --- /dev/null +++ b/SytelineSaAppEfDataModel/Entities/CustomerOrderLine.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Entities +{ + public class CustomerOrderLine + { + public string CoNum { get; set; } + public short CoLine { get; set; } + public string Item { get; set; } + public string CustItem { get; set; } + public string FeatStr { get; set; } + public decimal BlanketQty { get; set; } + public DateTime? EffDate { get; set; } + public DateTime? ExpDate { get; set; } + public decimal? ContPrice { get; set; } + public string Stat { get; set; } + public DateTime? PromiseDate { get; set; } + public string Pricecode { get; set; } + public string UM { get; set; } + public decimal BlanketQtyConv { get; set; } + public decimal? ContPriceConv { get; set; } + public string ShipSite { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string Description { get; set; } + public string ConfigId { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public byte PrintKitComponents { get; set; } + public string NonInvAcct { get; set; } + public string NonInvAcctUnit1 { get; set; } + public string NonInvAcctUnit2 { get; set; } + public string NonInvAcctUnit3 { get; set; } + public string NonInvAcctUnit4 { get; set; } + public decimal? CostConv { get; set; } + public short? DaysShippedBeforeDueDateTolerance { get; set; } + public short? DaysShippedAfterDueDateTolerance { get; set; } + public decimal? ShippedOverOrderedQtyTolerance { get; set; } + public decimal? ShippedUnderOrderedQtyTolerance { get; set; } + public string ManufacturerId { get; set; } + public string ManufacturerItem { get; set; } + public string Uf_FKR_EDI_BLN_Address { get; set; } + public string Uf_FKR_EDI_BLN_BoxType { get; set; } + public string Uf_FKR_EDI_BLN_FinalDestination { get; set; } + public int? Uf_FKR_EDI_BLN_QtyPerBox { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Entities/CustomerOrderLineItem.cs b/SytelineSaAppEfDataModel/Entities/CustomerOrderLineItem.cs new file mode 100644 index 0000000..074570a --- /dev/null +++ b/SytelineSaAppEfDataModel/Entities/CustomerOrderLineItem.cs @@ -0,0 +1,138 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Entities +{ + public class CustomerOrderLineItem + { + public string CoNum { get; set; } + public short CoLine { get; set; } + public short CoRelease { get; set; } + public string Item { get; set; } + public decimal QtyOrdered { get; set; } + public decimal QtyReady { get; set; } + public decimal QtyShipped { get; set; } + public decimal QtyPacked { get; set; } + public decimal Disc { get; set; } + public decimal Cost { get; set; } + public decimal Price { get; set; } + public string RefType { get; set; } + public string RefNum { get; set; } + public short? RefLineSuf { get; set; } + public short? RefRelease { get; set; } + public DateTime? DueDate { get; set; } + public DateTime? ShipDate { get; set; } + public decimal BrkQty1 { get; set; } + public decimal BrkQty2 { get; set; } + public decimal BrkQty3 { get; set; } + public decimal BrkQty4 { get; set; } + public decimal BrkQty5 { get; set; } + public byte Reprice { get; set; } + public string CustItem { get; set; } + public decimal QtyInvoiced { get; set; } + public decimal QtyReturned { get; set; } + public decimal CgsTotal { get; set; } + public string FeatStr { get; set; } + public string Stat { get; set; } + public string CustNum { get; set; } + public int CustSeq { get; set; } + public decimal? PrgBillTot { get; set; } + public decimal? PrgBillApp { get; set; } + public DateTime? ReleaseDate { get; set; } + public DateTime? PromiseDate { get; set; } + public string Whse { get; set; } + public string WksBasis { get; set; } + public decimal? WksValue { get; set; } + public string CommCode { get; set; } + public string TransNat { get; set; } + public string ProcessInd { get; set; } + public string Delterm { get; set; } + public decimal? UnitWeight { get; set; } + public string Origin { get; set; } + public int? ConsNum { get; set; } + public string TaxCode1 { get; set; } + public string TaxCode2 { get; set; } + public decimal? ExportValue { get; set; } + public string EcCode { get; set; } + public string Transport { get; set; } + public DateTime? PickDate { get; set; } + public string Pricecode { get; set; } + public string UM { get; set; } + public decimal QtyOrderedConv { get; set; } + public decimal PriceConv { get; set; } + public string CoCustNum { get; set; } + public byte? Packed { get; set; } + public byte? Bol { get; set; } + public decimal QtyRsvd { get; set; } + public decimal MatlCost { get; set; } + public decimal LbrCost { get; set; } + public decimal FovhdCost { get; set; } + public decimal VovhdCost { get; set; } + public decimal OutCost { get; set; } + public decimal CgsTotalMatl { get; set; } + public decimal CgsTotalLbr { get; set; } + public decimal CgsTotalFovhd { get; set; } + public decimal CgsTotalVovhd { get; set; } + public decimal CgsTotalOut { get; set; } + public decimal CostConv { get; set; } + public decimal MatlCostConv { get; set; } + public decimal LbrCostConv { get; set; } + public decimal FovhdCostConv { get; set; } + public decimal VovhdCostConv { get; set; } + public decimal OutCostConv { get; set; } + public string ShipSite { get; set; } + public byte? SyncReqd { get; set; } + public string CoOrigSite { get; set; } + public string CustPo { get; set; } + public string RmaNum { get; set; } + public short? RmaLine { get; set; } + public DateTime? ProjectedDate { get; set; } + public byte Consolidate { get; set; } + public string InvFreq { get; set; } + public byte Summarize { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string Description { get; set; } + public string ConfigId { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public string TransNat2 { get; set; } + public decimal SupplQtyConvFactor { get; set; } + public byte PrintKitComponents { get; set; } + public string ExternalReservationRef { get; set; } + public string NonInvAcct { get; set; } + public string NonInvAcctUnit1 { get; set; } + public string NonInvAcctUnit2 { get; set; } + public string NonInvAcctUnit3 { get; set; } + public string NonInvAcctUnit4 { get; set; } + public short? DaysShippedBeforeDueDateTolerance { get; set; } + public short? DaysShippedAfterDueDateTolerance { get; set; } + public decimal? ShippedOverOrderedQtyTolerance { get; set; } + public decimal? ShippedUnderOrderedQtyTolerance { get; set; } + public short? Priority { get; set; } + public byte InvoiceHold { get; set; } + public string ManufacturerId { get; set; } + public string ManufacturerItem { get; set; } + public decimal QtyPicked { get; set; } + public string Uf_ZPL_VATRegisterCode { get; set; } + public Guid? Uf_FKR_EDI_EdiCoItemRowPointer { get; set; } + public short? Uf_IMP_CoLineOrginal { get; set; } + public decimal? Uf_IMP_QtyOrdered { get; set; } + public decimal? Uf_IMP_QtyOrginal { get; set; } + public byte? Uf_IMP_SplitCoLine { get; set; } + public byte? Uf_IMP_SplitCoLineChange { get; set; } + public string Uf_FKR_EDI_ITEM_DeliveryCallNum { get; set; } + public string Uf_FKR_EDI_ITEM_RoutingCode { get; set; } + public char? Uf_pci_code { get; set; } + public string Uf_LOC_11_UnloadingPoint { get; set; } + public string Uf_LOC_159_DestinationPoint { get; set; } + public string Uf_Status { get; set; } + public string Uf_FKR_EDI_ITEM_PalletCode { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Entities/EdiCustomerOrder.cs b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrder.cs new file mode 100644 index 0000000..76723c1 --- /dev/null +++ b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrder.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Entities +{ + public class EdiCustomerOrder : EntityBase + { + public string TransactionCode { get; set; } + public string TpCode { get; set; } + public DateTime? RecivedDate { get; set; } + public byte? Posted { get; set; } + public DateTime? PostedDate { get; set; } + public DateTime? ExtendedDate { get; set; } + public short? ErrorMessage { get; set; } + public byte? Override { get; set; } + public byte? Ack { get; set; } + public string AckNumber { get; set; } + public int? AckSequence { get; set; } + public string AckType { get; set; } + public DateTime? AckDate { get; set; } + public string SymbolicCustomerOrderNumber { get; set; } + public decimal? BlanketDollar { get; set; } + public string Type { get; set; } + public string CustomerOrderNumber { get; set; } + public string EstimatedNumber { get; set; } + public string CustomerNumber { get; set; } + public int? CustomerSequence { get; set; } + public string Contact { get; set; } + public string Phone { get; set; } + public string CustomerPoNumber { get; set; } + public DateTime? OrderDate { get; set; } + public string TakenBy { get; set; } + public string TermsCode { get; set; } + public string ShipCode { get; set; } + public decimal? Price { get; set; } + public decimal? Weight { get; set; } + public short? QtyPackages { get; set; } + public decimal? Freight { get; set; } + public decimal? MiscCharges { get; set; } + public decimal? PrepaidAmount { get; set; } + public decimal? SalesTax { get; set; } + public string Status { get; set; } + public decimal? Cost { get; set; } + public DateTime? CloseDate { get; set; } + public decimal? FreightT { get; set; } + public decimal? MchargesT { get; set; } + public decimal? PrepaidT { get; set; } + public decimal? SalesTaxT { get; set; } + public string Salesman { get; set; } + public DateTime? EffectiveDate { get; set; } + public DateTime? ExpirationDate { get; set; } + public string Warehouse { get; set; } + public decimal? SalesTaxTwo { get; set; } + public decimal? SalesTaxTwoT { get; set; } + public string CharFieldOne { get; set; } + public string CharFieldTwo { get; set; } + public string CharFieldThree { get; set; } + public DateTime? DateField { get; set; } + public decimal? DecimalFieldOne { get; set; } + public decimal? DecimalFieldTwo { get; set; } + public decimal? DecimalFieldThree { get; set; } + public byte? LogiField { get; set; } + public byte? EdiOrder { get; set; } + public string TransactionNat { get; set; } + public string ProcessInd { get; set; } + public string DelTerm { get; set; } + public byte? UseExchangeRate { get; set; } + public string TaxCodeOne { get; set; } + public string TaxCodeTwo { get; set; } + public string FreightTaxCodeOne { get; set; } + public string FreightTaxCodeTwo { get; set; } + public string MscTaxCodeOne { get; set; } + public string MscTaxCodeTwo { get; set; } + public decimal? Discount { get; set; } + public string PriceCode { get; set; } + public byte? ShipPartial { get; set; } + public byte? ShipEarly { get; set; } + public string NonApplyData { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public string DiscountType { get; set; } + public decimal? DiscountAmount { get; set; } + public string TransNatTwo { get; set; } + public string UfFkrEdiMessageRefNum { get; set; } + public string UfFkrEdiConsigneeAddress { get; set; } + public string UfFkrEdiConsigneeName { get; set; } + public string UfFkrEdiFileName { get; set; } + public string UfFkrEdiBuyerDunsNumber { get; set; } + public string Gate { get; set; } + public string CustomerName { get; set; } + public string RecipientCode { get; set; } + public string SenderCode { get; set; } + public string SellerCode { get; set; } + public string DocType { get; set; } + public string BuyerCode { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLine.cs b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLine.cs new file mode 100644 index 0000000..def2f18 --- /dev/null +++ b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLine.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Entities +{ + public class EdiCustomerOrderLine + { + public string CustomerOrderNumber { get; set; } + public int CustomerOrderLine { get; set; } + public string Item { get; set; } + public string CustomerItemNumber { get; set; } + public string FeatStr { get; set; } + public decimal? BlanketQty { get; set; } + public DateTime? EffectiveDate { get; set; } + public DateTime? ExpirationDate { get; set; } + public decimal? ContPrice { get; set; } + public string Status { get; set; } + public DateTime? PromiseDate { get; set; } + public string PriceCode { get; set; } + public string Uom { get; set; } + public decimal? BlanketQtyReleased { get; set; } + public decimal? ContPriceReleased { get; set; } + public decimal? QtySent { get; set; } + public string SentCode { get; set; } + public string NonAppliedData { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string Description { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public string BoxType { get; set; } + public string Address { get; set; } + public string FinalDestination { get; set; } + public int? QtyPerBox { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLineItem.cs b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLineItem.cs new file mode 100644 index 0000000..0e4f289 --- /dev/null +++ b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderLineItem.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Entities +{ + public class EdiCustomerOrderLineItem + { + public string TransactionCode { get; set; } + public DateTime? ReceivedDate { get; set; } + public byte? Posted { get; set; } + public DateTime? PostedDate { get; set; } + public DateTime? ExtendedDate { get; set; } + public short? ErrorMessage { get; set; } + public byte? Override { get; set; } + public byte? Edi { get; set; } + public byte? Ack { get; set; } + public string AckNumber { get; set; } + public string AckType { get; set; } + public DateTime? AckDate { get; set; } + public string SymCustomerOrderNumber { get; set; } + public byte? QtyChanged { get; set; } + public byte? DateChanged { get; set; } + public byte? PriceChanged { get; set; } + public string CustomerOrderNumber { get; set; } + public int CustomerOrderLine { get; set; } + public int CustomerOrderRelease { get; set; } + public string Item { get; set; } + public decimal? QtyOrdered { get; set; } + public decimal? QtyReady { get; set; } + public decimal? QtyShipped { get; set; } + public decimal? QtyPacked { get; set; } + public decimal? Discount { get; set; } + public decimal? Cost { get; set; } + public decimal? Price { get; set; } + public string RefType { get; set; } + public string RefNumber { get; set; } + public short? RefLineSuf { get; set; } + public short? RefRelease { get; set; } + public DateTime? DueDate { get; set; } + public DateTime? ShipDate { get; set; } + public decimal? BrkQtyOne { get; set; } + public decimal? BrkQtyTwo { get; set; } + public decimal? BrkQtyThree { get; set; } + public decimal? BrkQtyFour { get; set; } + public decimal? BrkQtyFive { get; set; } + public byte? Reprice { get; set; } + public string CustomerItem { get; set; } + public decimal? QtyInvoiced { get; set; } + public decimal? QtyReturned { get; set; } + public decimal? CgsTotal { get; set; } + public string FeatStr { get; set; } + public string Status { get; set; } + public string CustomerNumber { get; set; } + public int? CustomerSequence { get; set; } + public decimal? PrgBillTot { get; set; } + public decimal? PrgBillApp { get; set; } + public DateTime? ReleaseDate { get; set; } + public DateTime? PromiseDate { get; set; } + public string Warehouse { get; set; } + public string WksBasis { get; set; } + public decimal? WksValue { get; set; } + public string CommCode { get; set; } + public string TransNat { get; set; } + public string ProcessInd { get; set; } + public string DelTerm { get; set; } + public decimal? UnitWeight { get; set; } + public string Origin { get; set; } + public int? ConsNumber { get; set; } + public string TaxCodeOne { get; set; } + public string TaxCodeTwo { get; set; } + public decimal? ExportValue { get; set; } + public string EcCode { get; set; } + public string Transport { get; set; } + public DateTime? PickupDate { get; set; } + public string PriceCode { get; set; } + public string Uom { get; set; } + public decimal? QtyOrderedReleased { get; set; } + public decimal? PriceReleased { get; set; } + public string CustomerOrderCustomerNumber { get; set; } + public byte? Packed { get; set; } + public byte? Bol { get; set; } + public decimal? QtyBco { get; set; } + public string BcoCode { get; set; } + public string ExternalRef { get; set; } + public string CustomerPoNumber { get; set; } + public string NonApplyData { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string Description { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + public string TransNatTwo { get; set; } + public decimal SupplyQtyConvFactor { get; set; } + public string UfFkrEdiAddIntDest { get; set; } + public string UfFkrEdiCustPoLineNum { get; set; } + public string UfFkrEdiPlaceOrPortDischarge { get; set; } + public string RoutingCode { get; set; } + public string DeliveryCallNumber { get; set; } + public string UnloadingPoint { get; set; } + public string DestinationPoint { get; set; } + public string NewStatus { get; set; } + public string PalletCode { get; set; } + public string PalletNumber { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderTranslate.cs b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderTranslate.cs new file mode 100644 index 0000000..81aa9db --- /dev/null +++ b/SytelineSaAppEfDataModel/Entities/EdiCustomerOrderTranslate.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Entities +{ + public class EdiCustomerOrderTranslate + { + public int Id { get; set; } + public byte CoEdiOrder { get; set; } + public Guid CoRowPointer { get; set; } + public string CoCoNum { get; set; } + public string CoType { get; set; } + public string CoTakenBy { get; set; } + public string EdiCoCoNum { get; set; } + public int OrdersCount { get; set; } + public bool OrderFound { get; set; } + public DateTime CreatedDate { get; set; } + public string FoundNumbers { get; set; } + public int ScheduleOrderId { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/Entities/EntityBase.cs b/SytelineSaAppEfDataModel/Entities/EntityBase.cs new file mode 100644 index 0000000..361983c --- /dev/null +++ b/SytelineSaAppEfDataModel/Entities/EntityBase.cs @@ -0,0 +1,6 @@ +namespace SytelineSaAppEfDataModel.Entities +{ + public class EntityBase + { + } +} diff --git a/SytelineSaAppEfDataModel/Entities/ErrorLog.cs b/SytelineSaAppEfDataModel/Entities/ErrorLog.cs new file mode 100644 index 0000000..b0cc2e2 --- /dev/null +++ b/SytelineSaAppEfDataModel/Entities/ErrorLog.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SytelineSaAppEfDataModel.Entities +{ + public class ErrorLog + { + public string TrxNum { get; set; } + public short Seq { get; set; } + public int LineNum { get; set; } + public int ReleaseNum { get; set; } + public DateTime? ErrDate { get; set; } + public short? ErrNum { get; set; } + public string ErrMsg { get; set; } + public string TrxCode { get; set; } + public byte NoteExistsFlag { get; set; } + public DateTime RecordDate { get; set; } + public Guid RowPointer { get; set; } + public string CreatedBy { get; set; } + public string UpdatedBy { get; set; } + public DateTime CreateDate { get; set; } + public byte InWorkflow { get; set; } + } +} diff --git a/SytelineSaAppEfDataModel/MappingProfile.cs b/SytelineSaAppEfDataModel/MappingProfile.cs new file mode 100644 index 0000000..c6f3d1f --- /dev/null +++ b/SytelineSaAppEfDataModel/MappingProfile.cs @@ -0,0 +1,26 @@ +using AutoMapper; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SytelineSaAppEfDataModel.Dtos; +using SytelineSaAppEfDataModel.Entities; + +namespace SytelineSaAppEfDataModel +{ + public class MappingProfile : Profile + { + public MappingProfile() + { + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + } + } +} diff --git a/SytelineSaAppEfDataModel/Services/CustomerOrderService.cs b/SytelineSaAppEfDataModel/Services/CustomerOrderService.cs new file mode 100644 index 0000000..c0d130e --- /dev/null +++ b/SytelineSaAppEfDataModel/Services/CustomerOrderService.cs @@ -0,0 +1,41 @@ +using AutoMapper; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using SytelineSaAppEfDataModel.Dtos; + +namespace SytelineSaAppEfDataModel.Services +{ + public class CustomerOrderService(SytelineSaAppDbContext context, IMapper mapper) : ICustomerOrderService + { + public async Task> GetAll() + { + return await context.CustomerOrders.Select(x => mapper.Map(x)) + .OrderByDescending(x => x.CreateDate).ToListAsync(); + } + + public async Task GetByOrderNumber(string orderNumber) + { + CustomerOrderDto? customerOrder = await context.CustomerOrders + .Where(x => x.CoNum == orderNumber) + .Select(x => mapper.Map(x)).FirstOrDefaultAsync(); + if (customerOrder == null) return null; + + customerOrder.CustomerOrderLines = await context.CustomerOrderLines + .Where(x => x.CoNum == orderNumber) + .Select(x => mapper.Map(x)).ToListAsync(); + + foreach (CustomerOrderLineDto customerOrderLine in customerOrder.CustomerOrderLines) + { + customerOrderLine.CustomerOrderLineItems = await context.CustomerOrderLineItems + .Where(x => x.CoNum == orderNumber && x.CoLine == customerOrderLine.CoLine) + .Select(x => mapper.Map(x)).ToListAsync(); + } + + return customerOrder; + } + } +} diff --git a/SytelineSaAppEfDataModel/Services/EdiCustomerOrderService.cs b/SytelineSaAppEfDataModel/Services/EdiCustomerOrderService.cs new file mode 100644 index 0000000..307e8fa --- /dev/null +++ b/SytelineSaAppEfDataModel/Services/EdiCustomerOrderService.cs @@ -0,0 +1,114 @@ +using AutoMapper; +using Microsoft.Data.SqlClient; +using Microsoft.EntityFrameworkCore; +using System.Data; +using SytelineSaAppEfDataModel.Dtos; +using SytelineSaAppEfDataModel.Entities; + +namespace SytelineSaAppEfDataModel.Services +{ + public class EdiCustomerOrderService(SytelineSaAppDbContext context, IMapper mapper) : IEdiCustomerOrderService + { + public async Task> GetAll() + { + IList ediCustomerOrderTranslates = await context.EdiCustomerOrderTranslates + .Select(x => mapper.Map(x)).ToListAsync(); + + IList ediCustomerOrders = + await context.EdiCustomerOrders.Select(x => mapper.Map(x)).ToListAsync(); + + IDictionary> ediTranslatesByCoNumber = ediCustomerOrderTranslates + .GroupBy(x => x.EdiCoCoNum).ToDictionary(x => x.Key, y => y.ToList()); + + foreach (EdiCustomerOrderDto ediCustomerOrder in ediCustomerOrders) + { + if (!ediTranslatesByCoNumber.TryGetValue(ediCustomerOrder.CustomerOrderNumber, + out List? customerOrderTranslates)) continue; + + customerOrderTranslates = customerOrderTranslates.OrderByDescending(x => x.CreatedDate).ToList(); + ediCustomerOrder.EdiCustomerOrderTranslates = customerOrderTranslates; + } + + return ediCustomerOrders; + } + + public async Task> GetByDate(DateTime date) + { + IList customerOrders = new List(); + + IList orderNumbers = await context.EdiCustomerOrders.Where(x => x.CreateDate > date) + .Select(x => x.CustomerOrderNumber).ToListAsync(); + + foreach (string orderNumber in orderNumbers) + { + customerOrders.Add(await GetByOrderNumber(orderNumber)); + } + + return customerOrders; + } + + public async Task GetByOrderNumber(string customerOrderNumber) + { + IList ediCustomerOrderLines = await context.EdiCustomerOrderLines + .Where(x => x.CustomerOrderNumber == customerOrderNumber) + .Select(x => mapper.Map(x)).ToListAsync(); + + foreach (EdiCustomerOrderLineDto ediCustomerOrderLine in ediCustomerOrderLines) + { + ediCustomerOrderLine.EdiCustomerOrderLineItems = await context.EdiCustomerOrderLineItems + .Where(x => x.CustomerOrderNumber == customerOrderNumber && + x.CustomerOrderLine == ediCustomerOrderLine.CustomerOrderLine) + .Select(x => mapper.Map(x)).ToListAsync(); + } + + EdiCustomerOrderDto ediCustomerOrder = mapper.Map( + await context.EdiCustomerOrders.FirstOrDefaultAsync(x => x.CustomerOrderNumber == customerOrderNumber)); + + if (ediCustomerOrder == null) + { + return null; + } + + IList ediCustomerOrderTranslates = await context.EdiCustomerOrderTranslates + .Where(x => x.EdiCoCoNum == ediCustomerOrder.CustomerOrderNumber) + .Select(x => mapper.Map(x)).ToListAsync(); + + ediCustomerOrder.EdiCustomerOrderLines = ediCustomerOrderLines; + ediCustomerOrder.EdiCustomerOrderTranslates = ediCustomerOrderTranslates; + + return ediCustomerOrder; + } + + public async Task SendOrderToSyteline(string customerOrderNumber) + { + var ediCoNum = new SqlParameter("@PEdiCoNum", SqlDbType.NVarChar, 50) { Value = customerOrderNumber }; + var ediCoCount = new SqlParameter("@PEdiCoCount", SqlDbType.Int) { Value = 0, Direction = ParameterDirection.Output }; + var postedCount = new SqlParameter("@PPostedCount", SqlDbType.Int) { Value = 0, Direction = ParameterDirection.Output }; + var infoBar = new SqlParameter("@Infobar", SqlDbType.NVarChar, 2800) { Value = "", Direction = ParameterDirection.Output }; + var autoPost = new SqlParameter("@AutoPost", SqlDbType.Int) { Value = 0 }; + var processId = new SqlParameter("@ProcessId", SqlDbType.Int) { Value = 423456 }; + + await context.Database.ExecuteSqlRawAsync( + "EXEC [dbo].[FKR_EDI_EXTGEN_EdiInOrderPSp] @PEdiCoNum, @PEdiCoCount OUT, @PPostedCount OUT, @Infobar OUT, @AutoPost, @ProcessId", + ediCoNum, ediCoCount, postedCount, infoBar, autoPost, processId); + + //var result = await context.Database.ExecuteSqlRawAsync( + // "EXEC [dbo].[FKR_EDI_EXTGEN_EdiInOrderPSp] @PEdiCoNum, @PEdiCoCount, @PPostedCount, @Infobar, @AutoPost, @ProcessId", + // parameter1, parameter2, parameter3, parameter4, parameter5, parameter6); + + string? infoBarResult = infoBar.Value?.ToString(); + int ediCoCountResult = Convert.ToInt32(ediCoCount.Value); + int postedCountResult = Convert.ToInt32(postedCount.Value); + + Console.WriteLine($"EDI Co Num: {infoBarResult}"); + Console.WriteLine($"EDI Co Count: {ediCoCountResult}"); + Console.WriteLine($"Posted Count: {postedCountResult}"); + + return postedCountResult; + //// Jeśli chcesz pobrać wyniki procedury składowanej: + //var results = context.SomeEntity.FromSqlRaw( + // "EXEC YourStoredProcedure @Param1, @Param2", + // parameter1, parameter2).ToList(); + } + } +} diff --git a/SytelineSaAppEfDataModel/Services/ErrorLogService.cs b/SytelineSaAppEfDataModel/Services/ErrorLogService.cs new file mode 100644 index 0000000..fc218c4 --- /dev/null +++ b/SytelineSaAppEfDataModel/Services/ErrorLogService.cs @@ -0,0 +1,25 @@ +using AutoMapper; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SytelineSaAppEfDataModel.Dtos; + +namespace SytelineSaAppEfDataModel.Services +{ + public class ErrorLogService(SytelineSaAppDbContext context, IMapper mapper) : IErrorLogService + { + public async Task> GetAll() + { + return await context.ErrorLogs.Select(x => mapper.Map(x)).ToListAsync(); + } + + public async Task> GetByOrderNumber(string customerOrderNumber) + { + return await context.ErrorLogs.Where(x => x.TrxNum == customerOrderNumber) + .Select(x => mapper.Map(x)).ToListAsync(); + } + } +} diff --git a/SytelineSaAppEfDataModel/Services/ICustomerOrderService.cs b/SytelineSaAppEfDataModel/Services/ICustomerOrderService.cs new file mode 100644 index 0000000..9c3b338 --- /dev/null +++ b/SytelineSaAppEfDataModel/Services/ICustomerOrderService.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SytelineSaAppEfDataModel.Dtos; + +namespace SytelineSaAppEfDataModel.Services +{ + public interface ICustomerOrderService + { + Task> GetAll(); + Task GetByOrderNumber(string orderNumber); + } +} diff --git a/SytelineSaAppEfDataModel/Services/IEdiCustomerOrderService.cs b/SytelineSaAppEfDataModel/Services/IEdiCustomerOrderService.cs new file mode 100644 index 0000000..03f7574 --- /dev/null +++ b/SytelineSaAppEfDataModel/Services/IEdiCustomerOrderService.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SytelineSaAppEfDataModel.Dtos; + +namespace SytelineSaAppEfDataModel.Services +{ + public interface IEdiCustomerOrderService + { + Task> GetAll(); + Task> GetByDate(DateTime date); + Task GetByOrderNumber(string orderNumber); + Task SendOrderToSyteline(string customerOrderNumber); + } +} diff --git a/SytelineSaAppEfDataModel/Services/IErrorLogService.cs b/SytelineSaAppEfDataModel/Services/IErrorLogService.cs new file mode 100644 index 0000000..c890052 --- /dev/null +++ b/SytelineSaAppEfDataModel/Services/IErrorLogService.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SytelineSaAppEfDataModel.Dtos; + +namespace SytelineSaAppEfDataModel.Services +{ + public interface IErrorLogService + { + Task> GetAll(); + Task> GetByOrderNumber(string customerOrderNumber); + } +} diff --git a/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs b/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs new file mode 100644 index 0000000..85daf4a --- /dev/null +++ b/SytelineSaAppEfDataModel/SytelineSaAppDbContext.cs @@ -0,0 +1,631 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using SytelineSaAppEfDataModel.Entities; + +namespace SytelineSaAppEfDataModel +{ + public class SytelineSaAppDbContext : DbContext + { + public SytelineSaAppDbContext(DbContextOptions options) : base(options) { } + + public DbSet EdiCustomerOrders { get; set; } + public DbSet EdiCustomerOrderLines { get; set; } + public DbSet EdiCustomerOrderLineItems { get; set; } + public DbSet EdiCustomerOrderTranslates { get; set; } + public DbSet ErrorLogs { get; set; } + public DbSet CustomerOrders { get; set; } + public DbSet CustomerOrderLines { get; set; } + public DbSet CustomerOrderLineItems { get; set; } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .Build(); + + var connectionString = configuration.GetConnectionString("SytelineSaAppConnection"); + optionsBuilder.UseSqlServer(connectionString, options => options.CommandTimeout(300)); + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.ToTable("edi_co"); + + entity.HasKey(e => e.RowPointer); + + entity.Property(e => e.TransactionCode).IsRequired(false).HasColumnName("trx_code").HasMaxLength(8); + entity.Property(e => e.TpCode).IsRequired(false).HasColumnName("tp_code").HasMaxLength(40); + entity.Property(e => e.RecivedDate).IsRequired(false).HasColumnName("recv_date"); + entity.Property(e => e.Posted).IsRequired(false).HasColumnName("posted"); + entity.Property(e => e.PostedDate).IsRequired(false).HasColumnName("post_date"); + entity.Property(e => e.ExtendedDate).IsRequired(false).HasColumnName("ext_date"); + entity.Property(e => e.ErrorMessage).IsRequired(false).HasColumnName("errmsg"); + entity.Property(e => e.Override).IsRequired(false).HasColumnName("override"); + entity.Property(e => e.Ack).IsRequired(false).HasColumnName("ack"); + entity.Property(e => e.AckNumber).IsRequired(false).HasColumnName("ack_num").HasMaxLength(7); + entity.Property(e => e.AckSequence).IsRequired(false).HasColumnName("ack_seq"); + entity.Property(e => e.AckType).IsRequired(false).HasColumnName("ack_type").HasMaxLength(2); + entity.Property(e => e.AckDate).IsRequired(false).HasColumnName("ack_date"); + entity.Property(e => e.SymbolicCustomerOrderNumber).IsRequired(false).HasColumnName("sym_co_num").HasMaxLength(10); + entity.Property(e => e.BlanketDollar).IsRequired(false).HasColumnName("blnkt_dollar"); + entity.Property(e => e.Type).IsRequired(false).HasColumnName("type").HasMaxLength(1); + entity.Property(e => e.CustomerOrderNumber).IsRequired(false).HasColumnName("co_num").HasMaxLength(10).IsRequired(); + entity.Property(e => e.EstimatedNumber).IsRequired(false).HasColumnName("est_num").HasMaxLength(10); + entity.Property(e => e.CustomerNumber).IsRequired(false).HasColumnName("cust_num").HasMaxLength(7); + entity.Property(e => e.CustomerSequence).IsRequired(false).HasColumnName("cust_seq"); + entity.Property(e => e.Contact).IsRequired(false).HasColumnName("contact").HasMaxLength(30); + entity.Property(e => e.Phone).IsRequired(false).HasColumnName("phone").HasMaxLength(25); + entity.Property(e => e.CustomerPoNumber).IsRequired(false).HasColumnName("cust_po").HasMaxLength(22); + entity.Property(e => e.OrderDate).IsRequired(false).HasColumnName("order_date"); + entity.Property(e => e.TakenBy).IsRequired(false).HasColumnName("taken_by").HasMaxLength(15); + entity.Property(e => e.TermsCode).IsRequired(false).HasColumnName("terms_code").HasMaxLength(3); + entity.Property(e => e.ShipCode).IsRequired(false).HasColumnName("ship_code").HasMaxLength(4); + entity.Property(e => e.Price).IsRequired(false).HasColumnName("price"); + entity.Property(e => e.Weight).IsRequired(false).HasColumnName("weight"); + entity.Property(e => e.QtyPackages).IsRequired(false).HasColumnName("qty_packages"); + entity.Property(e => e.Freight).IsRequired(false).HasColumnName("freight"); + entity.Property(e => e.MiscCharges).IsRequired(false).HasColumnName("misc_charges"); + entity.Property(e => e.PrepaidAmount).IsRequired(false).HasColumnName("prepaid_amt"); + entity.Property(e => e.SalesTax).IsRequired(false).HasColumnName("sales_tax"); + entity.Property(e => e.Status).IsRequired(false).HasColumnName("stat").HasMaxLength(1); + entity.Property(e => e.Cost).IsRequired(false).HasColumnName("cost"); + entity.Property(e => e.CloseDate).IsRequired(false).HasColumnName("close_date"); + entity.Property(e => e.FreightT).IsRequired(false).HasColumnName("freight_t"); + entity.Property(e => e.MchargesT).IsRequired(false).HasColumnName("m_charges_t"); + entity.Property(e => e.PrepaidT).IsRequired(false).HasColumnName("prepaid_t"); + entity.Property(e => e.SalesTaxT).IsRequired(false).HasColumnName("sales_tax_t"); + entity.Property(e => e.Salesman).IsRequired(false).HasColumnName("slsman").HasMaxLength(8); + entity.Property(e => e.EffectiveDate).IsRequired(false).HasColumnName("eff_date"); + entity.Property(e => e.ExpirationDate).IsRequired(false).HasColumnName("exp_date"); + entity.Property(e => e.Warehouse).IsRequired(false).HasColumnName("whse").HasMaxLength(4); + entity.Property(e => e.SalesTaxTwo).IsRequired(false).HasColumnName("sales_tax_2"); + entity.Property(e => e.SalesTaxTwoT).IsRequired(false).HasColumnName("sales_tax_t2"); + entity.Property(e => e.CharFieldOne).IsRequired(false).HasColumnName("charfld1").HasMaxLength(20); + entity.Property(e => e.CharFieldTwo).IsRequired(false).HasColumnName("charfld2").HasMaxLength(20); + entity.Property(e => e.CharFieldThree).IsRequired(false).HasColumnName("charfld3").HasMaxLength(20); + entity.Property(e => e.DateField).IsRequired(false).HasColumnName("datefld"); + entity.Property(e => e.DecimalFieldOne).IsRequired(false).HasColumnName("decifld1"); + entity.Property(e => e.DecimalFieldTwo).IsRequired(false).HasColumnName("decifld2"); + entity.Property(e => e.DecimalFieldThree).IsRequired(false).HasColumnName("decifld3"); + entity.Property(e => e.LogiField).IsRequired(false).HasColumnName("logifld"); + entity.Property(e => e.EdiOrder).IsRequired(false).HasColumnName("edi_order"); + entity.Property(e => e.TransactionNat).IsRequired(false).HasColumnName("trans_nat").HasMaxLength(2); + entity.Property(e => e.ProcessInd).IsRequired(false).HasColumnName("process_ind").HasMaxLength(1); + entity.Property(e => e.DelTerm).IsRequired(false).HasColumnName("delterm").HasMaxLength(4); + entity.Property(e => e.UseExchangeRate).IsRequired(false).HasColumnName("use_exch_rate"); + entity.Property(e => e.TaxCodeOne).IsRequired(false).HasColumnName("tax_code1").HasMaxLength(6); + entity.Property(e => e.TaxCodeTwo).IsRequired(false).HasColumnName("tax_code2").HasMaxLength(6); + entity.Property(e => e.FreightTaxCodeOne).IsRequired(false).HasColumnName("frt_tax_code1").HasMaxLength(6); + entity.Property(e => e.FreightTaxCodeTwo).IsRequired(false).HasColumnName("frt_tax_code2").HasMaxLength(6); + entity.Property(e => e.MscTaxCodeOne).IsRequired(false).HasColumnName("msc_tax_code1").HasMaxLength(6); + entity.Property(e => e.MscTaxCodeTwo).IsRequired(false).HasColumnName("msc_tax_code2").HasMaxLength(6); + entity.Property(e => e.Discount).IsRequired(false).HasColumnName("disc"); + entity.Property(e => e.PriceCode).IsRequired(false).HasColumnName("pricecode").HasMaxLength(3); + entity.Property(e => e.ShipPartial).IsRequired(false).HasColumnName("ship_partial"); + entity.Property(e => e.ShipEarly).IsRequired(false).HasColumnName("ship_early"); + entity.Property(e => e.NonApplyData).IsRequired(false).HasColumnName("non_appl_data").HasMaxLength(75); + entity.Property(e => e.NoteExistsFlag).HasColumnName("NoteExistsFlag"); + entity.Property(e => e.RecordDate).HasColumnName("RecordDate"); + entity.Property(e => e.RowPointer).HasColumnName("RowPointer"); + entity.Property(e => e.CreatedBy).IsRequired(false).HasColumnName("CreatedBy").HasMaxLength(30).IsRequired(); + entity.Property(e => e.UpdatedBy).IsRequired(false).HasColumnName("UpdatedBy").HasMaxLength(30).IsRequired(); + entity.Property(e => e.CreateDate).HasColumnName("CreateDate"); + entity.Property(e => e.InWorkflow).HasColumnName("InWorkflow"); + entity.Property(e => e.DiscountType).IsRequired(false).HasColumnName("discount_type").HasMaxLength(1); + entity.Property(e => e.DiscountAmount).IsRequired(false).HasColumnName("disc_amount"); + entity.Property(e => e.TransNatTwo).IsRequired(false).HasColumnName("trans_nat_2").HasMaxLength(2); + entity.Property(e => e.UfFkrEdiMessageRefNum).IsRequired(false).HasColumnName("uf_FKR_EDI_MessageRefNum").HasMaxLength(35); + entity.Property(e => e.UfFkrEdiConsigneeAddress).IsRequired(false).HasColumnName("Uf_FKR_EDI_ConsigneeAddress").HasMaxLength(35); + entity.Property(e => e.UfFkrEdiConsigneeName).IsRequired(false).HasColumnName("Uf_FKR_EDI_ConsigneeName").HasMaxLength(35); + entity.Property(e => e.UfFkrEdiFileName).IsRequired(false).HasColumnName("Uf_FKR_EDI_FileName"); + entity.Property(e => e.UfFkrEdiBuyerDunsNumber).IsRequired(false).HasColumnName("uf_FKR_EDI_BuyerDunsNumber").HasMaxLength(35); + entity.Property(e => e.Gate).IsRequired(false).HasColumnName("Uf_FKR_EDI_Gate").HasMaxLength(255); + entity.Property(e => e.CustomerName).IsRequired(false).HasColumnName("Uf_FKR_EDI_CustName").HasMaxLength(255); + entity.Property(e => e.RecipientCode).IsRequired(false).HasColumnName("Uf_FKR_EDI_RecipientCode").HasMaxLength(50); + entity.Property(e => e.SenderCode).IsRequired(false).HasColumnName("Uf_FKR_EDI_SenderCode").HasMaxLength(50); + entity.Property(e => e.SellerCode).IsRequired(false).HasColumnName("Uf_FKR_EDI_SellerCode").HasMaxLength(50); + entity.Property(e => e.DocType).IsRequired(false).HasColumnName("Uf_DocType").HasMaxLength(50); + entity.Property(e => e.BuyerCode).IsRequired(false).HasColumnName("Uf_FKR_EDI_BuyerCode").HasMaxLength(50); + }); + + modelBuilder.Entity(entity => + { + entity.ToTable("edi_cobln"); + + entity.HasKey(e => e.RowPointer); + + entity.Property(e => e.CustomerOrderNumber).IsRequired(false).HasColumnName("co_num").HasMaxLength(10).IsRequired(); + entity.Property(e => e.CustomerOrderLine).HasColumnType("smallint").HasColumnName("co_line").IsRequired(); + entity.Property(e => e.Item).IsRequired(false).HasColumnName("item").HasMaxLength(30); + entity.Property(e => e.CustomerItemNumber).IsRequired(false).HasColumnName("cust_item").HasMaxLength(30); + entity.Property(e => e.FeatStr).IsRequired(false).HasColumnName("feat_str").HasMaxLength(40); + entity.Property(e => e.BlanketQty).IsRequired(false).HasColumnName("blanket_qty"); + entity.Property(e => e.EffectiveDate).HasColumnName("eff_date"); + entity.Property(e => e.ExpirationDate).HasColumnName("exp_date"); + entity.Property(e => e.ContPrice).IsRequired(false).HasColumnName("cont_price"); + entity.Property(e => e.Status).IsRequired(false).HasColumnName("stat").HasMaxLength(1); + entity.Property(e => e.PromiseDate).HasColumnName("promise_date"); + entity.Property(e => e.PriceCode).IsRequired(false).HasColumnName("pricecode").HasMaxLength(3); + entity.Property(e => e.Uom).IsRequired(false).HasColumnName("u_m").HasMaxLength(3); + entity.Property(e => e.BlanketQtyReleased).IsRequired(false).HasColumnName("blanket_qty_conv"); + entity.Property(e => e.ContPriceReleased).IsRequired(false).HasColumnName("cont_price_conv"); + entity.Property(e => e.QtySent).IsRequired(false).HasColumnName("qty_bco"); + entity.Property(e => e.SentCode).IsRequired(false).HasColumnName("bco_code").HasMaxLength(1); + entity.Property(e => e.NonAppliedData).IsRequired(false).HasColumnName("non_appl_data").HasMaxLength(75); + entity.Property(e => e.NoteExistsFlag).HasColumnName("NoteExistsFlag"); + entity.Property(e => e.RecordDate).HasColumnName("RecordDate"); + entity.Property(e => e.RowPointer).HasColumnName("RowPointer"); + entity.Property(e => e.Description).IsRequired(false).HasColumnName("description").HasMaxLength(40); + entity.Property(e => e.CreatedBy).IsRequired(false).HasColumnName("CreatedBy").HasMaxLength(30).IsRequired(); + entity.Property(e => e.UpdatedBy).IsRequired(false).HasColumnName("UpdatedBy").HasMaxLength(30).IsRequired(); + entity.Property(e => e.CreateDate).HasColumnName("CreateDate"); + entity.Property(e => e.InWorkflow).HasColumnName("InWorkflow"); + entity.Property(e => e.BoxType).IsRequired(false).HasColumnName("Uf_FKR_EDI_BLN_BoxType").HasMaxLength(150); + entity.Property(e => e.Address).IsRequired(false).HasColumnName("Uf_FKR_EDI_BLN_Address").HasMaxLength(100); + entity.Property(e => e.FinalDestination).IsRequired(false).HasColumnName("Uf_FKR_EDI_BLN_FinalDestination").HasMaxLength(100); + entity.Property(e => e.QtyPerBox).IsRequired(false).HasColumnName("Uf_FKR_EDI_BLN_QtyPerBox"); + }); + + modelBuilder.Entity(entity => + { + entity.ToTable("edi_coitem"); + + entity.HasKey(e => e.RowPointer); + + entity.Property(e => e.TransactionCode).IsRequired(false).HasColumnName("trx_code").HasMaxLength(8); + entity.Property(e => e.ReceivedDate).HasColumnName("recv_date"); + entity.Property(e => e.Posted).IsRequired(false).HasColumnName("posted"); + entity.Property(e => e.PostedDate).HasColumnName("post_date"); + entity.Property(e => e.ExtendedDate).HasColumnName("ext_date"); + entity.Property(e => e.ErrorMessage).IsRequired(false).HasColumnName("errmsg"); + entity.Property(e => e.Override).IsRequired(false).HasColumnName("override"); + entity.Property(e => e.Edi).IsRequired(false).HasColumnName("edi"); + entity.Property(e => e.Ack).IsRequired(false).HasColumnName("ack"); + entity.Property(e => e.AckNumber).IsRequired(false).HasColumnName("ack_num").HasMaxLength(7); + entity.Property(e => e.AckType).IsRequired(false).HasColumnName("ack_type").HasMaxLength(2); + entity.Property(e => e.AckDate).HasColumnName("ack_date"); + entity.Property(e => e.SymCustomerOrderNumber).IsRequired(false).HasColumnName("sym_co_num").HasMaxLength(10); + entity.Property(e => e.QtyChanged).IsRequired(false).HasColumnName("qty_chg"); + entity.Property(e => e.DateChanged).IsRequired(false).HasColumnName("date_chg"); + entity.Property(e => e.PriceChanged).IsRequired(false).HasColumnName("price_chg"); + entity.Property(e => e.CustomerOrderNumber).HasColumnName("co_num").HasMaxLength(10).IsRequired(); + entity.Property(e => e.CustomerOrderLine).HasColumnType("smallint").HasColumnName("co_line").IsRequired(); + entity.Property(e => e.CustomerOrderRelease).HasColumnType("smallint").HasColumnName("co_release").IsRequired(); + entity.Property(e => e.Item).IsRequired(false).HasColumnName("item").HasMaxLength(30); + entity.Property(e => e.QtyOrdered).IsRequired(false).HasColumnName("qty_ordered"); + entity.Property(e => e.QtyReady).IsRequired(false).HasColumnName("qty_ready"); + entity.Property(e => e.QtyShipped).IsRequired(false).HasColumnName("qty_shipped"); + entity.Property(e => e.QtyPacked).IsRequired(false).HasColumnName("qty_packed"); + entity.Property(e => e.Discount).IsRequired(false).HasColumnName("disc"); + entity.Property(e => e.Cost).IsRequired(false).HasColumnName("cost"); + entity.Property(e => e.Price).IsRequired(false).HasColumnName("price"); + entity.Property(e => e.RefType).IsRequired(false).HasColumnName("ref_type").HasMaxLength(1); + entity.Property(e => e.RefNumber).IsRequired(false).HasColumnName("ref_num").HasMaxLength(10); + entity.Property(e => e.RefLineSuf).IsRequired(false).HasColumnName("ref_line_suf"); + entity.Property(e => e.RefRelease).IsRequired(false).HasColumnName("ref_release"); + entity.Property(e => e.DueDate).HasColumnName("due_date"); + entity.Property(e => e.ShipDate).HasColumnName("ship_date"); + entity.Property(e => e.BrkQtyOne).IsRequired(false).HasColumnName("brk_qty##1"); + entity.Property(e => e.BrkQtyTwo).IsRequired(false).HasColumnName("brk_qty##2"); + entity.Property(e => e.BrkQtyThree).IsRequired(false).HasColumnName("brk_qty##3"); + entity.Property(e => e.BrkQtyFour).IsRequired(false).HasColumnName("brk_qty##4"); + entity.Property(e => e.BrkQtyFive).IsRequired(false).HasColumnName("brk_qty##5"); + entity.Property(e => e.Reprice).IsRequired(false).HasColumnName("reprice"); + entity.Property(e => e.CustomerItem).IsRequired(false).HasColumnName("cust_item").HasMaxLength(30); + entity.Property(e => e.QtyInvoiced).IsRequired(false).HasColumnName("qty_invoiced"); + entity.Property(e => e.QtyReturned).IsRequired(false).HasColumnName("qty_returned"); + entity.Property(e => e.CgsTotal).IsRequired(false).HasColumnName("cgs_total"); + entity.Property(e => e.FeatStr).IsRequired(false).HasColumnName("feat_str").HasMaxLength(40); + entity.Property(e => e.Status).IsRequired(false).HasColumnName("stat").HasMaxLength(1); + entity.Property(e => e.CustomerNumber).IsRequired(false).HasColumnName("cust_num").HasMaxLength(7); + entity.Property(e => e.CustomerSequence).IsRequired(false).HasColumnName("cust_seq"); + entity.Property(e => e.PrgBillTot).IsRequired(false).HasColumnName("prg_bill_tot"); + entity.Property(e => e.PrgBillApp).IsRequired(false).HasColumnName("prg_bill_app"); + entity.Property(e => e.ReleaseDate).HasColumnName("release_date"); + entity.Property(e => e.PromiseDate).HasColumnName("promise_date"); + entity.Property(e => e.Warehouse).IsRequired(false).HasColumnName("whse").HasMaxLength(4); + entity.Property(e => e.WksBasis).IsRequired(false).HasColumnName("wks_basis").HasMaxLength(1); + entity.Property(e => e.WksValue).IsRequired(false).HasColumnName("wks_value"); + entity.Property(e => e.CommCode).IsRequired(false).HasColumnName("comm_code").HasMaxLength(12); + entity.Property(e => e.TransNat).IsRequired(false).HasColumnName("trans_nat").HasMaxLength(2); + entity.Property(e => e.ProcessInd).IsRequired(false).HasColumnName("process_ind").HasMaxLength(1); + entity.Property(e => e.DelTerm).IsRequired(false).HasColumnName("delterm").HasMaxLength(4); + entity.Property(e => e.UnitWeight).IsRequired(false).HasColumnName("unit_weight"); + entity.Property(e => e.Origin).IsRequired(false).HasColumnName("origin").HasMaxLength(2); + entity.Property(e => e.ConsNumber).IsRequired(false).HasColumnName("cons_num"); + entity.Property(e => e.TaxCodeOne).IsRequired(false).HasColumnName("tax_code1").HasMaxLength(6); + entity.Property(e => e.TaxCodeTwo).IsRequired(false).HasColumnName("tax_code2").HasMaxLength(6); + entity.Property(e => e.ExportValue).IsRequired(false).HasColumnName("export_value"); + entity.Property(e => e.EcCode).IsRequired(false).HasColumnName("ec_code").HasMaxLength(2); + entity.Property(e => e.Transport).IsRequired(false).HasColumnName("transport").HasMaxLength(3); + entity.Property(e => e.PickupDate).HasColumnName("pick_date"); + entity.Property(e => e.PriceCode).IsRequired(false).HasColumnName("pricecode").HasMaxLength(3); + entity.Property(e => e.Uom).IsRequired(false).HasColumnName("u_m").HasMaxLength(3); + entity.Property(e => e.QtyOrderedReleased).IsRequired(false).HasColumnName("qty_ordered_conv"); + entity.Property(e => e.PriceReleased).IsRequired(false).HasColumnName("price_conv"); + entity.Property(e => e.CustomerOrderCustomerNumber).IsRequired(false).HasColumnName("co_cust_num").HasMaxLength(7); + entity.Property(e => e.Packed).IsRequired(false).HasColumnName("packed"); + entity.Property(e => e.Bol).IsRequired(false).HasColumnName("bol"); + entity.Property(e => e.QtyBco).IsRequired(false).HasColumnName("qty_bco"); + entity.Property(e => e.BcoCode).IsRequired(false).HasColumnName("bco_code").HasMaxLength(1); + entity.Property(e => e.ExternalRef).IsRequired(false).HasColumnName("ext_ref").HasMaxLength(6); + entity.Property(e => e.CustomerPoNumber).IsRequired(false).HasColumnName("cust_po").HasMaxLength(22); + entity.Property(e => e.NonApplyData).IsRequired(false).HasColumnName("non_appl_data").HasMaxLength(75); + entity.Property(e => e.NoteExistsFlag).HasColumnName("NoteExistsFlag"); + entity.Property(e => e.RecordDate).HasColumnName("RecordDate"); + entity.Property(e => e.RowPointer).HasColumnName("RowPointer"); + entity.Property(e => e.Description).IsRequired(false).HasColumnName("description").HasMaxLength(40); + entity.Property(e => e.CreatedBy).IsRequired(false).HasColumnName("CreatedBy").HasMaxLength(30).IsRequired(); + entity.Property(e => e.UpdatedBy).IsRequired(false).HasColumnName("UpdatedBy").HasMaxLength(30).IsRequired(); + entity.Property(e => e.CreateDate).HasColumnName("CreateDate"); + entity.Property(e => e.InWorkflow).HasColumnName("InWorkflow"); + entity.Property(e => e.TransNatTwo).IsRequired(false).HasColumnName("trans_nat_2").HasMaxLength(2); + entity.Property(e => e.SupplyQtyConvFactor).HasColumnName("suppl_qty_conv_factor"); + entity.Property(e => e.UfFkrEdiAddIntDest).IsRequired(false).HasColumnName("uf_FKR_EDI_AddIntDest").HasMaxLength(100); + entity.Property(e => e.UfFkrEdiCustPoLineNum).IsRequired(false).HasColumnName("Uf_FKR_EDI_CustPoLineNum").HasMaxLength(100); + entity.Property(e => e.UfFkrEdiPlaceOrPortDischarge).IsRequired(false).HasColumnName("uf_FKR_EDI_PlaceOrPortDischarge").HasMaxLength(100); + entity.Property(e => e.RoutingCode).IsRequired(false).HasColumnName("Uf_FKR_EDI_ITEM_RoutingCode").HasMaxLength(50); + entity.Property(e => e.DeliveryCallNumber).IsRequired(false).HasColumnName("Uf_FKR_EDI_ITEM_DeliveryCallNum").HasMaxLength(50); + entity.Property(e => e.UnloadingPoint).IsRequired(false).HasColumnName("Uf_LOC_11_UnloadingPoint").HasMaxLength(50); + entity.Property(e => e.DestinationPoint).IsRequired(false).HasColumnName("Uf_LOC_159_DestinationPoint").HasMaxLength(50); + entity.Property(e => e.NewStatus).IsRequired(false).HasColumnName("Uf_Status").HasMaxLength(50); + entity.Property(e => e.PalletCode).IsRequired(false).HasColumnName("Uf_pci_code").HasMaxLength(1); + entity.Property(e => e.PalletNumber).IsRequired(false).HasColumnName("Uf_FKR_EDI_ITEM_PalletCode").HasMaxLength(50); + }); + + modelBuilder.Entity(entity => + { + entity.ToTable("edi_co_translate"); + + entity.Property(e => e.Id).HasColumnName("Id"); + + entity.Property(e => e.CoEdiOrder).HasColumnType("byte").HasColumnName("CoEdiOrder"); + entity.Property(e => e.CoRowPointer).HasColumnName("CoRowPointer"); + entity.Property(e => e.CoCoNum).HasColumnName("CoCoNum").HasMaxLength(50).IsRequired(); + entity.Property(e => e.CoType).HasColumnName("CoType").HasMaxLength(1).IsRequired(); + entity.Property(e => e.CoTakenBy).HasColumnName("CoTakenBy").HasMaxLength(15).IsRequired(); + entity.Property(e => e.EdiCoCoNum).HasColumnName("EdiCoCoNum").HasMaxLength(10).IsRequired(); + entity.Property(e => e.OrdersCount).HasColumnName("OrdersCount"); + entity.Property(e => e.OrderFound).HasColumnName("OrderFound"); + entity.Property(e => e.CreatedDate).HasColumnName("CreatedDate"); + entity.Property(e => e.FoundNumbers).IsRequired(false).HasColumnName("FoundNumbers"); + entity.Property(e => e.ScheduleOrderId).HasColumnName("ScheduleOrderId"); + }); + + modelBuilder.Entity(entity => + { + entity.ToTable("err_log"); + + entity.HasKey(e => new { e.TrxNum, e.Seq }); + + entity.Property(e => e.TrxNum).HasColumnName("trx_num").HasMaxLength(20); + entity.Property(e => e.LineNum).HasColumnName("line_num").HasColumnType("smallint"); + entity.Property(e => e.ReleaseNum).HasColumnName("release_num").HasColumnType("smallint"); + entity.Property(e => e.ErrDate).HasColumnName("err_date"); + entity.Property(e => e.Seq).HasColumnName("seq"); + entity.Property(e => e.ErrNum).HasColumnName("err_num"); + entity.Property(e => e.ErrMsg).HasColumnName("err_msg").HasMaxLength(5600); + entity.Property(e => e.TrxCode).IsRequired(false).HasColumnName("trx_code").HasMaxLength(16); + entity.Property(e => e.NoteExistsFlag).HasColumnName("NoteExistsFlag"); + entity.Property(e => e.RecordDate).HasColumnName("RecordDate"); + entity.Property(e => e.RowPointer).HasColumnName("RowPointer").HasColumnType("uniqueidentifier"); + entity.Property(e => e.CreatedBy).HasColumnName("CreatedBy").HasMaxLength(60); + entity.Property(e => e.UpdatedBy).HasColumnName("UpdatedBy").HasMaxLength(60); + entity.Property(e => e.CreateDate).HasColumnName("CreateDate"); + entity.Property(e => e.InWorkflow).HasColumnName("InWorkflow"); + }); + + modelBuilder.Entity(entity => + { + entity.ToTable("co"); + + entity.HasKey(e => e.CoNum); + + entity.Property(e => e.Type).HasColumnName("type").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.CoNum).HasColumnName("co_num").HasMaxLength(20); + entity.Property(e => e.EstNum).HasColumnName("est_num").HasMaxLength(20).IsRequired(false); + entity.Property(e => e.CustNum).HasColumnName("cust_num").HasMaxLength(14).IsRequired(false); + entity.Property(e => e.CustSeq).HasColumnName("cust_seq"); + entity.Property(e => e.Contact).HasColumnName("contact").HasMaxLength(60).IsRequired(false); + entity.Property(e => e.Phone).HasColumnName("phone").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.CustPo).HasColumnName("cust_po").HasMaxLength(44).IsRequired(false); + entity.Property(e => e.OrderDate).HasColumnName("order_date"); + entity.Property(e => e.TakenBy).HasColumnName("taken_by").HasMaxLength(30).IsRequired(false); + entity.Property(e => e.TermsCode).HasColumnName("terms_code").HasMaxLength(6).IsRequired(false); + entity.Property(e => e.ShipCode).HasColumnName("ship_code").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.Price).HasColumnName("price").IsRequired(false); + entity.Property(e => e.Weight).HasColumnName("weight").IsRequired(false); + entity.Property(e => e.QtyPackages).HasColumnName("qty_packages").HasColumnType("smallint"); + entity.Property(e => e.Freight).HasColumnName("freight").IsRequired(false); + entity.Property(e => e.MiscCharges).HasColumnName("misc_charges").IsRequired(false); + entity.Property(e => e.PrepaidAmt).HasColumnName("prepaid_amt").IsRequired(false); + entity.Property(e => e.SalesTax).HasColumnName("sales_tax").IsRequired(false); + entity.Property(e => e.Stat).HasColumnName("stat").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.Cost).HasColumnName("cost").IsRequired(false); + entity.Property(e => e.CloseDate).HasColumnName("close_date").IsRequired(false); + entity.Property(e => e.FreightT).HasColumnName("freight_t").IsRequired(false); + entity.Property(e => e.MChargesT).HasColumnName("m_charges_t").IsRequired(false); + entity.Property(e => e.PrepaidT).HasColumnName("prepaid_t").IsRequired(false); + entity.Property(e => e.SalesTaxT).HasColumnName("sales_tax_t").IsRequired(false); + entity.Property(e => e.Slsman).HasColumnName("slsman").HasMaxLength(16).IsRequired(false); + entity.Property(e => e.EffDate).HasColumnName("eff_date").IsRequired(false); + entity.Property(e => e.ExpDate).HasColumnName("exp_date").IsRequired(false); + entity.Property(e => e.Whse).HasColumnName("whse").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.SalesTax2).HasColumnName("sales_tax_2").IsRequired(false); + entity.Property(e => e.SalesTaxT2).HasColumnName("sales_tax_t2").IsRequired(false); + entity.Property(e => e.EdiOrder).HasColumnName("edi_order").IsRequired(false); + entity.Property(e => e.TransNat).HasColumnName("trans_nat").HasMaxLength(4).IsRequired(false); + entity.Property(e => e.ProcessInd).HasColumnName("process_ind").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.Delterm).HasColumnName("delterm").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.UseExchRate).HasColumnName("use_exch_rate").IsRequired(false); + entity.Property(e => e.TaxCode1).HasColumnName("tax_code1").HasMaxLength(12).IsRequired(false); + entity.Property(e => e.TaxCode2).HasColumnName("tax_code2").HasMaxLength(12).IsRequired(false); + entity.Property(e => e.FrtTaxCode1).HasColumnName("frt_tax_code1").HasMaxLength(12).IsRequired(false); + entity.Property(e => e.FrtTaxCode2).HasColumnName("frt_tax_code2").HasMaxLength(12).IsRequired(false); + entity.Property(e => e.MscTaxCode1).HasColumnName("msc_tax_code1").HasMaxLength(12).IsRequired(false); + entity.Property(e => e.MscTaxCode2).HasColumnName("msc_tax_code2").HasMaxLength(12).IsRequired(false); + entity.Property(e => e.DiscountType).HasColumnName("discount_type").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.DiscAmount).HasColumnName("disc_amount").IsRequired(false); + entity.Property(e => e.Disc).HasColumnName("disc").IsRequired(false); + entity.Property(e => e.Pricecode).HasColumnName("pricecode").HasMaxLength(6).IsRequired(false); + entity.Property(e => e.ShipPartial).HasColumnName("ship_partial").IsRequired(false); + entity.Property(e => e.ShipEarly).HasColumnName("ship_early").IsRequired(false); + entity.Property(e => e.MatlCostT).HasColumnName("matl_cost_t").IsRequired(false); + entity.Property(e => e.LbrCostT).HasColumnName("lbr_cost_t").IsRequired(false); + entity.Property(e => e.FovhdCostT).HasColumnName("fovhd_cost_t").IsRequired(false); + entity.Property(e => e.VovhdCostT).HasColumnName("vovhd_cost_t").IsRequired(false); + entity.Property(e => e.OutCostT).HasColumnName("out_cost_t").IsRequired(false); + entity.Property(e => e.EndUserType).HasColumnName("end_user_type").HasMaxLength(12).IsRequired(false); + entity.Property(e => e.ExchRate).HasColumnName("exch_rate").IsRequired(false); + entity.Property(e => e.FixedRate).HasColumnName("fixed_rate").IsRequired(false); + entity.Property(e => e.OrigSite).HasColumnName("orig_site").HasMaxLength(16).IsRequired(false); + entity.Property(e => e.LcrNum).HasColumnName("lcr_num").HasMaxLength(40).IsRequired(false); + entity.Property(e => e.EdiType).HasColumnName("edi_type").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.Invoiced).HasColumnName("invoiced").IsRequired(false); + entity.Property(e => e.CreditHold).HasColumnName("credit_hold").IsRequired(false); + entity.Property(e => e.CreditHoldDate).HasColumnName("credit_hold_date").IsRequired(false); + entity.Property(e => e.CreditHoldReason).HasColumnName("credit_hold_reason").HasMaxLength(6).IsRequired(false); + entity.Property(e => e.CreditHoldUser).HasColumnName("credit_hold_user").HasMaxLength(6).IsRequired(false); + entity.Property(e => e.SyncReqd).HasColumnName("sync_reqd").IsRequired(false); + entity.Property(e => e.ProjectedDate).HasColumnName("projected_date").IsRequired(false); + entity.Property(e => e.OrderSource).HasColumnName("order_source").HasMaxLength(16).IsRequired(false); + entity.Property(e => e.ConvertType).HasColumnName("convert_type").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.ApsPullUp).HasColumnName("aps_pull_up").IsRequired(false); + entity.Property(e => e.Consolidate).HasColumnName("consolidate").IsRequired(false); + entity.Property(e => e.InvFreq).HasColumnName("inv_freq").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.Summarize).HasColumnName("summarize").IsRequired(false); + entity.Property(e => e.NoteExistsFlag).HasColumnName("NoteExistsFlag").HasColumnType("tinyint"); + entity.Property(e => e.RecordDate).HasColumnName("RecordDate"); + entity.Property(e => e.RowPointer).HasColumnName("RowPointer").HasColumnType("uniqueidentifier"); + entity.Property(e => e.Einvoice).HasColumnName("einvoice").IsRequired(false); + entity.Property(e => e.Charfld1).HasColumnName("charfld1").HasMaxLength(40).IsRequired(false); + entity.Property(e => e.Charfld2).HasColumnName("charfld2").HasMaxLength(40).IsRequired(false); + entity.Property(e => e.Charfld3).HasColumnName("charfld3").HasMaxLength(40).IsRequired(false); + entity.Property(e => e.Datefld).HasColumnName("datefld").IsRequired(false); + entity.Property(e => e.Decifld1).HasColumnName("decifld1").IsRequired(false); + entity.Property(e => e.Decifld2).HasColumnName("decifld2").IsRequired(false); + entity.Property(e => e.Decifld3).HasColumnName("decifld3").IsRequired(false); + entity.Property(e => e.Logifld).HasColumnName("logifld").HasColumnType("tinyint").IsRequired(false); + entity.Property(e => e.AckStat).HasColumnName("ack_stat").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.ConfigId).HasColumnName("config_id").HasMaxLength(24).IsRequired(false); + entity.Property(e => e.CreatedBy).HasColumnName("CreatedBy").HasMaxLength(60); + entity.Property(e => e.UpdatedBy).HasColumnName("UpdatedBy").HasMaxLength(60); + entity.Property(e => e.CreateDate).HasColumnName("CreateDate"); + entity.Property(e => e.InWorkflow).HasColumnName("InWorkflow").HasColumnType("tinyint"); + entity.Property(e => e.IncludeTaxInPrice).HasColumnName("include_tax_in_price").IsRequired(false); + entity.Property(e => e.TransNat2).HasColumnName("trans_nat_2").HasMaxLength(4).IsRequired(false); + entity.Property(e => e.ApplyToInvNum).HasColumnName("apply_to_inv_num").HasMaxLength(24).IsRequired(false); + entity.Property(e => e.ExportType).HasColumnName("export_type").HasMaxLength(2); + entity.Property(e => e.ExternalConfirmationRef).HasColumnName("external_confirmation_ref").HasMaxLength(160).IsRequired(false); + entity.Property(e => e.IsExternal).HasColumnName("is_external").HasColumnType("tinyint"); + entity.Property(e => e.ProspectId).HasColumnName("prospect_id").HasMaxLength(14).IsRequired(false); + entity.Property(e => e.OppId).HasColumnName("opp_id").HasMaxLength(20).IsRequired(false); + entity.Property(e => e.LeadId).HasColumnName("lead_id").HasMaxLength(20).IsRequired(false); + entity.Property(e => e.DaysShippedBeforeDueDateTolerance).HasColumnName("days_shipped_before_due_date_tolerance").HasColumnType("smallint"); + entity.Property(e => e.DaysShippedAfterDueDateTolerance).HasColumnName("days_shipped_after_due_date_tolerance").HasColumnType("smallint"); + entity.Property(e => e.ShippedOverOrderedQtyTolerance).HasColumnName("shipped_over_ordered_qty_tolerance").IsRequired(false); + entity.Property(e => e.ShippedUnderOrderedQtyTolerance).HasColumnName("shipped_under_ordered_qty_tolerance").IsRequired(false); + entity.Property(e => e.Consignment).HasColumnName("consignment").HasColumnType("tinyint"); + entity.Property(e => e.Priority).HasColumnName("priority").HasColumnType("smallint"); + entity.Property(e => e.DemandingSite).HasColumnName("demanding_site").HasMaxLength(16).IsRequired(false); + entity.Property(e => e.DemandingSitePoNum).HasColumnName("demanding_site_po_num").HasMaxLength(20).IsRequired(false); + entity.Property(e => e.Uf_FKR_CoContract).HasColumnName("Uf_FKR_CoContract").IsRequired(false); + entity.Property(e => e.Uf_BPX_DeliveryDate).HasColumnName("Uf_BPX_DeliveryDate").IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_CustName).HasColumnName("Uf_FKR_EDI_CustName").HasMaxLength(255).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_Gate).HasColumnName("Uf_FKR_EDI_Gate").HasMaxLength(255).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_RecipientCode).HasColumnName("Uf_FKR_EDI_RecipientCode").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_SellerCode).HasColumnName("Uf_FKR_EDI_SellerCode").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_SenderCode).HasColumnName("Uf_FKR_EDI_SenderCode").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_DocType).HasColumnName("Uf_DocType").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_BuyerCode).HasColumnName("Uf_FKR_EDI_BuyerCode").HasMaxLength(200).IsRequired(false); + }); + + modelBuilder.Entity(entity => + { + entity.ToTable("co_bln"); + + entity.HasKey(e => new { e.CoNum, e.CoLine }); + + entity.Property(e => e.CoNum).HasColumnName("co_num").HasMaxLength(20); + entity.Property(e => e.CoLine).HasColumnName("co_line").HasColumnType("smallint"); + entity.Property(e => e.Item).HasColumnName("item").HasMaxLength(60); + entity.Property(e => e.CustItem).HasColumnName("cust_item").HasMaxLength(60).IsRequired(false); + entity.Property(e => e.FeatStr).HasColumnName("feat_str").HasMaxLength(80).IsRequired(false); + entity.Property(e => e.BlanketQty).HasColumnName("blanket_qty"); + entity.Property(e => e.EffDate).HasColumnName("eff_date").IsRequired(false); + entity.Property(e => e.ExpDate).HasColumnName("exp_date").IsRequired(false); + entity.Property(e => e.ContPrice).HasColumnName("cont_price").IsRequired(false); + entity.Property(e => e.Stat).HasColumnName("stat").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.PromiseDate).HasColumnName("promise_date").IsRequired(false); + entity.Property(e => e.Pricecode).HasColumnName("pricecode").HasMaxLength(6).IsRequired(false); + entity.Property(e => e.UM).HasColumnName("u_m").HasMaxLength(6).IsRequired(false); + entity.Property(e => e.BlanketQtyConv).HasColumnName("blanket_qty_conv"); + entity.Property(e => e.ContPriceConv).HasColumnName("cont_price_conv").IsRequired(false); + entity.Property(e => e.ShipSite).HasColumnName("ship_site").HasMaxLength(16).IsRequired(false); + entity.Property(e => e.NoteExistsFlag).HasColumnName("NoteExistsFlag").HasColumnType("tinyint"); + entity.Property(e => e.RecordDate).HasColumnName("RecordDate"); + entity.Property(e => e.RowPointer).HasColumnName("RowPointer").HasColumnType("uniqueidentifier"); + entity.Property(e => e.Description).HasColumnName("description").HasMaxLength(80).IsRequired(false); + entity.Property(e => e.ConfigId).HasColumnName("config_id").HasMaxLength(24).IsRequired(false); + entity.Property(e => e.CreatedBy).HasColumnName("CreatedBy").HasMaxLength(60); + entity.Property(e => e.UpdatedBy).HasColumnName("UpdatedBy").HasMaxLength(60); + entity.Property(e => e.CreateDate).HasColumnName("CreateDate"); + entity.Property(e => e.InWorkflow).HasColumnName("InWorkflow").HasColumnType("tinyint"); + entity.Property(e => e.PrintKitComponents).HasColumnName("print_kit_components").HasColumnType("tinyint"); + entity.Property(e => e.NonInvAcct).HasColumnName("non_inv_acct").HasMaxLength(24).IsRequired(false); + entity.Property(e => e.NonInvAcctUnit1).HasColumnName("non_inv_acct_unit1").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.NonInvAcctUnit2).HasColumnName("non_inv_acct_unit2").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.NonInvAcctUnit3).HasColumnName("non_inv_acct_unit3").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.NonInvAcctUnit4).HasColumnName("non_inv_acct_unit4").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.CostConv).HasColumnName("cost_conv").IsRequired(false); + entity.Property(e => e.DaysShippedBeforeDueDateTolerance).HasColumnName("days_shipped_before_due_date_tolerance").HasColumnType("smallint").IsRequired(false); + entity.Property(e => e.DaysShippedAfterDueDateTolerance).HasColumnName("days_shipped_after_due_date_tolerance").HasColumnType("smallint").IsRequired(false); + entity.Property(e => e.ShippedOverOrderedQtyTolerance).HasColumnName("shipped_over_ordered_qty_tolerance").IsRequired(false); + entity.Property(e => e.ShippedUnderOrderedQtyTolerance).HasColumnName("shipped_under_ordered_qty_tolerance").IsRequired(false); + entity.Property(e => e.ManufacturerId).HasColumnName("manufacturer_id").HasMaxLength(14).IsRequired(false); + entity.Property(e => e.ManufacturerItem).HasColumnName("manufacturer_item").HasMaxLength(60).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_BLN_Address).HasColumnName("Uf_FKR_EDI_BLN_Address").HasMaxLength(100).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_BLN_BoxType).HasColumnName("Uf_FKR_EDI_BLN_BoxType").HasMaxLength(150).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_BLN_FinalDestination).HasColumnName("Uf_FKR_EDI_BLN_FinalDestination").HasMaxLength(100).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_BLN_QtyPerBox).HasColumnName("Uf_FKR_EDI_BLN_QtyPerBox").IsRequired(false); + }); + + modelBuilder.Entity(entity => + { + entity.ToTable("coitem"); + + entity.HasKey(e => new { e.CoNum, e.CoLine, e.CoRelease }); + + entity.Property(e => e.CoNum).HasColumnName("co_num").HasMaxLength(20); + entity.Property(e => e.CoLine).HasColumnName("co_line").HasColumnType("smallint"); + entity.Property(e => e.CoRelease).HasColumnName("co_release").HasColumnType("smallint"); + entity.Property(e => e.Item).HasColumnName("item").HasMaxLength(60); + entity.Property(e => e.QtyOrdered).HasColumnName("qty_ordered"); + entity.Property(e => e.QtyReady).HasColumnName("qty_ready"); + entity.Property(e => e.QtyShipped).HasColumnName("qty_shipped"); + entity.Property(e => e.QtyPacked).HasColumnName("qty_packed"); + entity.Property(e => e.Disc).HasColumnName("disc"); + entity.Property(e => e.Cost).HasColumnName("cost"); + entity.Property(e => e.Price).HasColumnName("price"); + entity.Property(e => e.RefType).HasColumnName("ref_type").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.RefNum).HasColumnName("ref_num").HasMaxLength(20).IsRequired(false); + entity.Property(e => e.RefLineSuf).HasColumnName("ref_line_suf").HasColumnType("smallint").IsRequired(false); + entity.Property(e => e.RefRelease).HasColumnName("ref_release").HasColumnType("smallint").IsRequired(false); + entity.Property(e => e.DueDate).HasColumnName("due_date").IsRequired(false); + entity.Property(e => e.ShipDate).HasColumnName("ship_date").IsRequired(false); + entity.Property(e => e.BrkQty1).HasColumnName("brk_qty1"); + entity.Property(e => e.BrkQty2).HasColumnName("brk_qty2"); + entity.Property(e => e.BrkQty3).HasColumnName("brk_qty3"); + entity.Property(e => e.BrkQty4).HasColumnName("brk_qty4"); + entity.Property(e => e.BrkQty5).HasColumnName("brk_qty5"); + entity.Property(e => e.Reprice).HasColumnName("reprice").HasColumnType("tinyint"); + entity.Property(e => e.CustItem).HasColumnName("cust_item").HasMaxLength(60).IsRequired(false); + entity.Property(e => e.QtyInvoiced).HasColumnName("qty_invoiced"); + entity.Property(e => e.QtyReturned).HasColumnName("qty_returned"); + entity.Property(e => e.CgsTotal).HasColumnName("cgs_total"); + entity.Property(e => e.FeatStr).HasColumnName("feat_str").HasMaxLength(80).IsRequired(false); + entity.Property(e => e.Stat).HasColumnName("stat").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.CustNum).HasColumnName("cust_num").HasMaxLength(14).IsRequired(false); + entity.Property(e => e.CustSeq).HasColumnName("cust_seq").HasColumnType("int").IsRequired(false); + entity.Property(e => e.PrgBillTot).HasColumnName("prg_bill_tot").IsRequired(false); + entity.Property(e => e.PrgBillApp).HasColumnName("prg_bill_app").IsRequired(false); + entity.Property(e => e.ReleaseDate).HasColumnName("release_date").IsRequired(false); + entity.Property(e => e.PromiseDate).HasColumnName("promise_date").IsRequired(false); + entity.Property(e => e.Whse).HasColumnName("whse").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.WksBasis).HasColumnName("wks_basis").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.WksValue).HasColumnName("wks_value").IsRequired(false); + entity.Property(e => e.CommCode).HasColumnName("comm_code").HasMaxLength(24).IsRequired(false); + entity.Property(e => e.TransNat).HasColumnName("trans_nat").HasMaxLength(4).IsRequired(false); + entity.Property(e => e.ProcessInd).HasColumnName("process_ind").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.Delterm).HasColumnName("delterm").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.UnitWeight).HasColumnName("unit_weight").IsRequired(false); + entity.Property(e => e.Origin).HasColumnName("origin").HasMaxLength(4).IsRequired(false); + entity.Property(e => e.ConsNum).HasColumnName("cons_num").IsRequired(false); + entity.Property(e => e.TaxCode1).HasColumnName("tax_code1").HasMaxLength(12).IsRequired(false); + entity.Property(e => e.TaxCode2).HasColumnName("tax_code2").HasMaxLength(12).IsRequired(false); + entity.Property(e => e.ExportValue).HasColumnName("export_value").IsRequired(false); + entity.Property(e => e.EcCode).HasColumnName("ec_code").HasMaxLength(4).IsRequired(false); + entity.Property(e => e.Transport).HasColumnName("transport").HasMaxLength(6).IsRequired(false); + entity.Property(e => e.PickDate).HasColumnName("pick_date").IsRequired(false); + entity.Property(e => e.Pricecode).HasColumnName("pricecode").HasMaxLength(6).IsRequired(false); + entity.Property(e => e.UM).HasColumnName("u_m").HasMaxLength(6); + entity.Property(e => e.QtyOrderedConv).HasColumnName("qty_ordered_conv"); + entity.Property(e => e.PriceConv).HasColumnName("price_conv"); + entity.Property(e => e.CoCustNum).HasColumnName("co_cust_num").HasMaxLength(14).IsRequired(false); + entity.Property(e => e.Packed).HasColumnName("packed").HasColumnType("tinyint").IsRequired(false); + entity.Property(e => e.Bol).HasColumnName("bol").HasColumnType("tinyint").IsRequired(false); + entity.Property(e => e.QtyRsvd).HasColumnName("qty_rsvd"); + entity.Property(e => e.MatlCost).HasColumnName("matl_cost"); + entity.Property(e => e.LbrCost).HasColumnName("lbr_cost"); + entity.Property(e => e.FovhdCost).HasColumnName("fovhd_cost"); + entity.Property(e => e.VovhdCost).HasColumnName("vovhd_cost"); + entity.Property(e => e.OutCost).HasColumnName("out_cost"); + entity.Property(e => e.CgsTotalMatl).HasColumnName("cgs_total_matl"); + entity.Property(e => e.CgsTotalLbr).HasColumnName("cgs_total_lbr"); + entity.Property(e => e.CgsTotalFovhd).HasColumnName("cgs_total_fovhd"); + entity.Property(e => e.CgsTotalVovhd).HasColumnName("cgs_total_vovhd"); + entity.Property(e => e.CgsTotalOut).HasColumnName("cgs_total_out"); + entity.Property(e => e.CostConv).HasColumnName("cost_conv"); + entity.Property(e => e.MatlCostConv).HasColumnName("matl_cost_conv"); + entity.Property(e => e.LbrCostConv).HasColumnName("lbr_cost_conv"); + entity.Property(e => e.FovhdCostConv).HasColumnName("fovhd_cost_conv"); + entity.Property(e => e.VovhdCostConv).HasColumnName("vovhd_cost_conv"); + entity.Property(e => e.OutCostConv).HasColumnName("out_cost_conv"); + entity.Property(e => e.ShipSite).HasColumnName("ship_site").HasMaxLength(16).IsRequired(false); + entity.Property(e => e.SyncReqd).HasColumnName("sync_reqd").HasColumnType("tinyint").IsRequired(false); + entity.Property(e => e.CoOrigSite).HasColumnName("co_orig_site").HasMaxLength(16).IsRequired(false); + entity.Property(e => e.CustPo).HasColumnName("cust_po").HasMaxLength(44).IsRequired(false); + entity.Property(e => e.RmaNum).HasColumnName("rma_num").HasMaxLength(20).IsRequired(false); + entity.Property(e => e.RmaLine).HasColumnName("rma_line").HasColumnType("smallint").IsRequired(false); + entity.Property(e => e.ProjectedDate).HasColumnName("projected_date").IsRequired(false); + entity.Property(e => e.Consolidate).HasColumnName("consolidate").HasColumnType("tinyint"); + entity.Property(e => e.InvFreq).HasColumnName("inv_freq").HasMaxLength(2).IsRequired(false); + entity.Property(e => e.Summarize).HasColumnName("summarize").HasColumnType("tinyint"); + entity.Property(e => e.NoteExistsFlag).HasColumnName("NoteExistsFlag").HasColumnType("tinyint"); + entity.Property(e => e.RecordDate).HasColumnName("RecordDate"); + entity.Property(e => e.RowPointer).HasColumnName("RowPointer").HasColumnType("uniqueidentifier"); + entity.Property(e => e.Description).HasColumnName("description").HasMaxLength(80).IsRequired(false); + entity.Property(e => e.ConfigId).HasColumnName("config_id").HasMaxLength(24).IsRequired(false); + entity.Property(e => e.CreatedBy).HasColumnName("CreatedBy").HasMaxLength(60); + entity.Property(e => e.UpdatedBy).HasColumnName("UpdatedBy").HasMaxLength(60); + entity.Property(e => e.CreateDate).HasColumnName("CreateDate"); + entity.Property(e => e.InWorkflow).HasColumnName("InWorkflow").HasColumnType("tinyint"); + entity.Property(e => e.TransNat2).HasColumnName("trans_nat_2").HasMaxLength(4).IsRequired(false); + entity.Property(e => e.SupplQtyConvFactor).HasColumnName("suppl_qty_conv_factor"); + entity.Property(e => e.PrintKitComponents).HasColumnName("print_kit_components").HasColumnType("tinyint"); + entity.Property(e => e.ExternalReservationRef).HasColumnName("external_reservation_ref").HasMaxLength(160).IsRequired(false); + entity.Property(e => e.NonInvAcct).HasColumnName("non_inv_acct").HasMaxLength(24).IsRequired(false); + entity.Property(e => e.NonInvAcctUnit1).HasColumnName("non_inv_acct_unit1").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.NonInvAcctUnit2).HasColumnName("non_inv_acct_unit2").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.NonInvAcctUnit3).HasColumnName("non_inv_acct_unit3").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.NonInvAcctUnit4).HasColumnName("non_inv_acct_unit4").HasMaxLength(8).IsRequired(false); + entity.Property(e => e.DaysShippedBeforeDueDateTolerance).HasColumnName("days_shipped_before_due_date_tolerance").HasColumnType("smallint").IsRequired(false); + entity.Property(e => e.DaysShippedAfterDueDateTolerance).HasColumnName("days_shipped_after_due_date_tolerance").HasColumnType("smallint").IsRequired(false); + entity.Property(e => e.ShippedOverOrderedQtyTolerance).HasColumnName("shipped_over_ordered_qty_tolerance").IsRequired(false); + entity.Property(e => e.ShippedUnderOrderedQtyTolerance).HasColumnName("shipped_under_ordered_qty_tolerance").IsRequired(false); + entity.Property(e => e.Priority).HasColumnName("priority").HasColumnType("smallint").IsRequired(false); + entity.Property(e => e.InvoiceHold).HasColumnName("invoice_hold").HasColumnType("tinyint"); + entity.Property(e => e.ManufacturerId).HasColumnName("manufacturer_id").HasMaxLength(14).IsRequired(false); + entity.Property(e => e.ManufacturerItem).HasColumnName("manufacturer_item").HasMaxLength(60).IsRequired(false); + entity.Property(e => e.QtyPicked).HasColumnName("qty_picked"); + entity.Property(e => e.Uf_ZPL_VATRegisterCode).HasColumnName("uf_ZPL_VATRegisterCode").HasMaxLength(20).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_EdiCoItemRowPointer).HasColumnName("Uf_FKR_EDI_EdiCoItemRowPointer").HasColumnType("uniqueidentifier").IsRequired(false); + entity.Property(e => e.Uf_IMP_CoLineOrginal).HasColumnName("Uf_IMP_CoLineOrginal").HasColumnType("smallint").IsRequired(false); + entity.Property(e => e.Uf_IMP_QtyOrdered).HasColumnName("Uf_IMP_QtyOrdered").IsRequired(false); + entity.Property(e => e.Uf_IMP_QtyOrginal).HasColumnName("Uf_IMP_QtyOrginal").IsRequired(false); + entity.Property(e => e.Uf_IMP_SplitCoLine).HasColumnName("Uf_IMP_SplitCoLine").HasColumnType("tinyint").IsRequired(false); + entity.Property(e => e.Uf_IMP_SplitCoLineChange).HasColumnName("Uf_IMP_SplitCoLineChange").HasColumnType("tinyint").IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_ITEM_DeliveryCallNum).HasColumnName("Uf_FKR_EDI_ITEM_DeliveryCallNum").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_ITEM_RoutingCode).HasColumnName("Uf_FKR_EDI_ITEM_RoutingCode").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_pci_code).HasColumnName("Uf_pci_code").HasMaxLength(1).IsRequired(false); + entity.Property(e => e.Uf_LOC_11_UnloadingPoint).HasColumnName("Uf_LOC_11_UnloadingPoint").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_LOC_159_DestinationPoint).HasColumnName("Uf_LOC_159_DestinationPoint").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_Status).HasColumnName("Uf_Status").HasMaxLength(50).IsRequired(false); + entity.Property(e => e.Uf_FKR_EDI_ITEM_PalletCode).HasColumnName("Uf_FKR_EDI_ITEM_PalletCode").HasMaxLength(50).IsRequired(false); + }); + } + } +} diff --git a/SytelineSaAppEfDataModel/SytelineSaAppEfDataModel.csproj b/SytelineSaAppEfDataModel/SytelineSaAppEfDataModel.csproj new file mode 100644 index 0000000..9ebcc82 --- /dev/null +++ b/SytelineSaAppEfDataModel/SytelineSaAppEfDataModel.csproj @@ -0,0 +1,30 @@ + + + + net8.0 + enable + enable + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + Always + + + diff --git a/SytelineSaAppEfDataModel/appsettings.json b/SytelineSaAppEfDataModel/appsettings.json new file mode 100644 index 0000000..298eb62 --- /dev/null +++ b/SytelineSaAppEfDataModel/appsettings.json @@ -0,0 +1,5 @@ +{ + "ConnectionStrings": { + "SytelineSaAppConnection": "Server=192.168.0.7;Database=SL_PRODTEST_SA_APP;User Id=sa;Password=Tetum#2021!;TrustServerCertificate=true" + } +} \ No newline at end of file