DPR Import Issue
Support Importing Job Work Slitting Issues (Separate Method)
This plan details the changes required to implement a separate, dedicated flow for importing Job Work slitting issues for production plans where PlanType is “S” (slitting) and jwPartyId is filled.
Proposed Design & Components
We will create a separate frontend page and separate backend methods to keep the Job Work import logic isolated from Inhouse slitting import:
- Web UI Page:
PrdnPlan1ImportJobworkSlittingIssue.razor - Controller Endpoints:
ImportJobworkSlittingIssue&ImportJobworkSlittingIssueDownloadModel - Repository Method:
ImportJobworkSlittingIssueinIPrdnPlanRepository&PrdnPlanRepository - Service Methods:
ImportJobworkSlittingIssue&ImportJobworkSlittingIssueDownloadModelinIPrdnPlanService&PrdnPlanService
Proposed Changes
1. Web UI
[MODIFY] PrdnPlan1Index.razor
- Update the button rendering so that:
- If
JwPartyIdis empty andlineCnt == 0, show the button pointing to the Inhouse slitting import page. - If
JwPartyIdis filled andlineCnt == 0, show the button pointing to the new Job Work slitting import page (prdnplan1importjobworkslittingissue/{mainid}).
- If
@if(lineCnt == 0)
{
@if(string.IsNullOrEmpty(_PrdnPlan.JwPartyId))
{
<MudButton Href=@($"prdnplan1importslittingissue/{@Convert.ToInt32(mainid)}") Variant="Variant.Filled"
Color="Color.Info" StartIcon="@Icons.Material.Filled.Upload">Import Issue</MudButton>
}
else
{
<MudButton Href=@($"prdnplan1importjobworkslittingissue/{@Convert.ToInt32(mainid)}") Variant="Variant.Filled"
Color="Color.Info" StartIcon="@Icons.Material.Filled.Upload">Import Issue</MudButton>
}
}[NEW] PrdnPlan1ImportJobworkSlittingIssue.razor
- Create a new Blazor page at route
/prdnplan1importjobworkslittingissue/{mainid}. - It will upload the Excel sheet named
ImportJobworkSlittingIssue.xlsx. - It will invoke
_IPrdnPlanService.ImportJobworkSlittingIssueand download the generated model file via_IPrdnPlanService.ImportJobworkSlittingIssueDownloadModel.
2. Service Layer
[MODIFY] IPrdnPlanService.cs
- Add declarations for:
Task<string> ImportJobworkSlittingIssue(string? dbname, string xlFile, string? yearLabel, string? userName, int mainId)Task<string> ImportJobworkSlittingIssueDownloadModel(string? dbname)
[MODIFY] PrdnPlanService.cs
- Implement
ImportJobworkSlittingIssueandImportJobworkSlittingIssueDownloadModelto call the backend API endpoints.
3. Backend API Layer
[MODIFY] PrdnPlanController.cs
- Implement
ImportJobworkSlittingIssueandImportJobworkSlittingIssueDownloadModelendpoints. - Read uploaded Excel worksheet data.
- Call repository
ImportJobworkSlittingIssuemethod. - Generate an output Excel sheet featuring Job Work validation error codes (
A,B,C,E,F,G,H,I).
[MODIFY] IPrdnPlanRepository.cs
- Add declaration for:
Task<Tuple<List<PrdnPlan1>, string>> ImportJobworkSlittingIssue(List<PrdnPlan1> listData, string dbname, string yearLabel, string userName, string yearPlanNo, string jwPartyId, string unitCode);
[MODIFY] PrdnPlanRepository.cs
- Implement
ImportJobworkSlittingIssue:- Create
#temptable. - Insert imported items into
#temp. - Update temp item values from
jobwork1(instead ofDprBill1,DprStocks, etc.). - Get balance qty/qty1 directly from
jobwork1. - Perform SQL validations:
- A: Invalid Trn Id (not in
jobwork1). - B: Already linked to a plan.
- C: Exists in short-closed.
- E: Coil size for width is 0 or null.
- F: Width/item combination is not same across all rows.
- G: Duplicate Ref Trn Id in the sheet.
- H: Coil number is empty in
jobwork1. - I: Jobwork Party / Unit does not match current plan’s header.
- A: Invalid Trn Id (not in
- When successfully imported:
- Insert records into
PrdnPlan1table. - Update
jobwork1.planTrnIdto point to the createdplantrnidfor each imported record. - Insert Log entry.
- Insert records into
- Create