Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions dataset/extensibility_request_implement.jsonl

Large diffs are not rendered by default.

21 changes: 17 additions & 4 deletions dataset/extensibility_request_triage.jsonl

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# [Extensibility Request] Report 5900 Service Order - Set global codeunit-var FormatDocument to protected

### Why do you need this change?

I need to align the capabilities of the service order and the sales order via ReportExtension. I want to use same pattern as in sales order to fill PaymentMethodDescription , ShipmentMethodDescription, etc. by using FormatDocument.SetTotalLabels() or SetPayment/Shipment/*Method.

### Describe the request

In Report move this var into protected var
FormatDocument: Codeunit "Format Document";
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# [Protected Var Request] table 224 "Order Address"

### Why do you need this change?

Please set global variable "PostCode" as protected. We need work with in our tablextension.

### Describe the request

```
protected var PostCode: Record "Post Code";
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# [Event Request] Tableextension 99000860 "Mfg. Requisition Line".ValidateProdOrderOnReqLine

### Why do you need this change?


We need skip standard check logic. Main reason is skip Γö¼ΓöñProdOrder.TestField(Blocked, false);Γö¼Γöñ, because in our workflow the order is set as blocked.
There is now another option how to skip standard logic and actual process block validation.

Our event is similar to existing event in '"tableextension 99000751 "Mfg. Purchase Line" extends "Purchase Line"'

```al
procedure ValidateProdOrderOnPurchLine()
var
Item: Record Item;
ProdOrder: Record Microsoft.Manufacturing.Document."Production Order";
ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line";
#if not CLEAN27
AddonIntegrManagement: Codeunit Microsoft.Inventory.AddOnIntegrManagement;
#endif
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeValidateProdOrderOnPurchLine(Rec, IsHandled);
#if not CLEAN27
AddonIntegrManagement.RunOnBeforeValidateProdOrderOnPurchLine(Rec, IsHandled);
#endif
if IsHandled then
exit;

TestField(Type, Type::Item);

if ProdOrder.Get(ProdOrder.Status::Released, "Prod. Order No.") then begin
ProdOrder.TestField(Blocked, false);
ProdOrderLine.SetRange(Status, ProdOrderLine.Status::Released);
ProdOrderLine.SetRange("Prod. Order No.", "Prod. Order No.");
ProdOrderLine.SetRange("Item No.", "No.");
if ProdOrderLine.FindFirst() then
"Routing No." := ProdOrderLine."Routing No.";
Item.Get("No.");
Validate("Unit of Measure Code", Item."Base Unit of Measure");
end;
end;
```

### Describe the request

```al
procedure ValidateProdOrderOnReqLine(var ReqLine: Record "Requisition Line")
var
Item: Record Item;
ProdOrder: Record "Production Order";
ProdOrderLine: Record "Prod. Order Line";
//------------------------------------------------------------OnBeforeValidateProdOrderOnReqLine:BEGIN
IsHandled: Boolean;
//------------------------------------------------------------OnBeforeValidateProdOrderOnReqLine:END
begin
//------------------------------------------------------------OnBeforeValidateProdOrderOnReqLine:BEGIN
IsHandled := false;
OnBeforeValidateProdOrderOnReqLine(ReqLine, IsHandled);
if IsHandled then
exit;
//------------------------------------------------------------OnBeforeValidateProdOrderOnReqLine:END

ReqLine.TestField(Type, ReqLine.Type::Item);

if ProdOrder.Get(ProdOrder.Status::Released, ReqLine."Prod. Order No.") then begin
ProdOrder.TestField(Blocked, false);
ProdOrderLine.SetRange(Status, ProdOrderLine.Status::Released);
ProdOrderLine.SetRange("Prod. Order No.", ReqLine."Prod. Order No.");
ProdOrderLine.SetRange("Item No.", ReqLine."No.");
if ProdOrderLine.FindFirst() then begin
ReqLine."Routing No." := ProdOrderLine."Routing No.";
ReqLine."Routing Reference No." := ProdOrderLine."Line No.";
ReqLine."Prod. Order Line No." := ProdOrderLine."Line No.";
ReqLine."Requester ID" := CopyStr(UserId(), 1, MaxStrLen(ReqLine."Requester ID"));
end;
Item.Get(ReqLine."No.");
ReqLine.Validate("Unit of Measure Code", Item."Base Unit of Measure");
end;
end;

//------------------------------------------------------------OnBeforeValidateProdOrderOnReqLine:BEGIN
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateProdOrderOnReqLine(var ReqLine: Record "Requisition Line"; var IsHandled: Boolean)
begin
end;
//------------------------------------------------------------OnBeforeValidateProdOrderOnReqLine:END
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# [Event Request] Codeunit 80 "Sales-Post" - Procedure SyncSurPlusItemTracking

### Why do you need this change?

Hi,
i need an event at the end of procedure "SyncSurPlusItemTracking" in the Codeunit 80 "Sales-Post" to skip the execution of the "ModifyAll".

We need the event because we have an app that creates reservation entries of type Surplus, but the standard procedure "SyncSurPlusItemTracking" zeroes out the "Qty. to Handle (Base)" and "Qty. to Invoice (Base)" on these entries.
This causes an error when posting the warehouse shipment.
Our app has its logic to decide when skip the execution of "ModifyAll".

Below is the standard procedure code:

`

local procedure SyncSurPlusItemTracking(SalesHeader: Record "Sales Header"; SalesLine: Record "Sales Line")
var
Location2: Record Location;
ReservEntry: Record "Reservation Entry";
TempTrackingSpecification2: Record "Tracking Specification" temporary;
TempWarehouseActivityLine: Record "Warehouse Activity Line" temporary;
WarehouseAvailabilityMgt: Codeunit "Warehouse Availability Mgt.";
QtyReservedForCurrLine: Decimal;
SurplusQtyToHandle: Decimal;
begin
if not SalesHeader.Ship then
exit;
if not (SalesHeader."Document Type" in [SalesHeader."Document Type"::Invoice, SalesHeader."Document Type"::Order]) then
exit;

if (SalesLine."Location Code" = '') or
not Location2.Get(SalesLine."Location Code") or
not Location2."Require Shipment"
then
exit;

TempTrackingSpecification2.SetSourceFromSalesLine(SalesLine);
QtyReservedForCurrLine := Abs(WarehouseAvailabilityMgt.CalcLineReservedQtyOnInvt(
TempTrackingSpecification2."Source Type", TempTrackingSpecification2."Source Subtype", TempTrackingSpecification2."Source ID", TempTrackingSpecification2."Source Ref. No.",
0, false, TempWarehouseActivityLine));

if QtyReservedForCurrLine = 0 then
exit;

ReservEntry.SetSourceFilter(
TempTrackingSpecification2."Source Type", TempTrackingSpecification2."Source Subtype",
TempTrackingSpecification2."Source ID", TempTrackingSpecification2."Source Ref. No.", true);
ReservEntry.SetSourceFilter('', TempTrackingSpecification2."Source Prod. Order Line");
ReservEntry.SetRange("Reservation Status", ReservEntry."Reservation Status"::Surplus);
if not ReservEntry.FindSet() then
exit;

ReservEntry.CalcSums("Qty. to Handle (Base)");
SurplusQtyToHandle := Abs(ReservEntry."Qty. to Handle (Base)");
if (QtyReservedForCurrLine + SurplusQtyToHandle) < SalesLine."Qty. to Ship (Base)" then
exit;

ReservEntry.ModifyAll("Qty. to Handle (Base)", 0);
ReservEntry.ModifyAll("Qty. to Invoice (Base)", 0);


end;




`

### Describe the request

Add a new event at the end of procedure "SyncSurPlusItemTracking" in the Codeunit 80 "Sales-Post" to skip the execution of the "ModifyAll".

`

local procedure SyncSurPlusItemTracking(SalesHeader: Record "Sales Header"; SalesLine: Record "Sales Line")
var
Location2: Record Location;
ReservEntry: Record "Reservation Entry";
TempTrackingSpecification2: Record "Tracking Specification" temporary;
TempWarehouseActivityLine: Record "Warehouse Activity Line" temporary;
WarehouseAvailabilityMgt: Codeunit "Warehouse Availability Mgt.";
QtyReservedForCurrLine: Decimal;
SurplusQtyToHandle: Decimal;
IsHandled: Boolean;
begin
if not SalesHeader.Ship then
exit;
if not (SalesHeader."Document Type" in [SalesHeader."Document Type"::Invoice, SalesHeader."Document Type"::Order]) then
exit;

if (SalesLine."Location Code" = '') or
not Location2.Get(SalesLine."Location Code") or
not Location2."Require Shipment"
then
exit;

TempTrackingSpecification2.SetSourceFromSalesLine(SalesLine);
QtyReservedForCurrLine := Abs(WarehouseAvailabilityMgt.CalcLineReservedQtyOnInvt(
TempTrackingSpecification2."Source Type", TempTrackingSpecification2."Source Subtype", TempTrackingSpecification2."Source ID", TempTrackingSpecification2."Source Ref. No.",
0, false, TempWarehouseActivityLine));

if QtyReservedForCurrLine = 0 then
exit;

ReservEntry.SetSourceFilter(
TempTrackingSpecification2."Source Type", TempTrackingSpecification2."Source Subtype",
TempTrackingSpecification2."Source ID", TempTrackingSpecification2."Source Ref. No.", true);
ReservEntry.SetSourceFilter('', TempTrackingSpecification2."Source Prod. Order Line");
ReservEntry.SetRange("Reservation Status", ReservEntry."Reservation Status"::Surplus);
if not ReservEntry.FindSet() then
exit;

ReservEntry.CalcSums("Qty. to Handle (Base)");
SurplusQtyToHandle := Abs(ReservEntry."Qty. to Handle (Base)");
if (QtyReservedForCurrLine + SurplusQtyToHandle) < SalesLine."Qty. to Ship (Base)" then
exit;


// New Event with IsHandled

OnBeforeModifyQtyToHandleInvoiceOnAfterSyncSurPlusItemTracking(SalesLine, SalesHeader, IsHandled, ReservEntry);

if not IsHandled then begin

ReservEntry.ModifyAll("Qty. to Handle (Base)", 0);
ReservEntry.ModifyAll("Qty. to Invoice (Base)", 0);
end;

end;




`




`

[IntegrationEvent(false, false)]
local procedure OnBeforeModifyQtyToHandleInvoiceOnAfterSyncSurPlusItemTracking(SalesLine: Record "Sales Line"; SalesHeader: Record "Sales Header"; var IsHandled: Boolean; var ReservEntry: Record "Reservation Entry")
begin
end;



`
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Event request [W1][Codeunit][816]["Purch. Post Invoice"] OnSplitFAOnBeforeRunGenJnlPostLine event

### Why do you need this change?

We have additional amounts in the "Gen. Journal Line" table that need to be divided when creating multiple FA cards on a purchase invoice.

### Describe the request

We suggest new event OnSplitFAOnBeforeRunGenJnlPostLine in the SplitFA procedure.
```
...
CalcSplitAmount(
GenJnlLine."VAT Difference", GenJnlLine2."VAT Difference", TotalGenJnlLine."VAT Difference", I, SplitNo);
CalcSplitAmount(
GenJnlLine."Salvage Value", GenJnlLine2."Salvage Value", TotalGenJnlLine."Salvage Value", I, SplitNo);

//new integration event
OnSplitFAOnBeforeRunGenJnlPostLine(GenJnlLine, GenJnlLine2, TotalGenJnlLine, I, SplitNo);

RunGenJnlPostLine(GenJnlLine, GenJnlPostLine);
end;
end;
...
[IntegrationEvent(false, false)]
local procedure OnSplitFAOnBeforeRunGenJnlPostLine(var GenJnlLine: Record "Gen. Journal Line"; var GenJnlLine2: Record "Gen. Journal Line"; var TotalGenJnlLine: Record "Gen. Journal Line"; I: Integer; SplitNo: Integer)
begin
end;
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# [Request for External] Add "var" reference to ItemTempl in event OnBeforeSelectItemTemplate in codeunit 1336 "Item Templ. Mgt."

### Why do you need this change?

Can you please add "var" reference to ItemTempl in event OnBeforeSelectItemTemplate in codeunit 1336 "Item Templ. Mgt."

```
[IntegrationEvent(false, false)]
// >>>>>>>>>>
//local procedure OnBeforeSelectItemTemplate(ItemTempl: Record "Item Templ."; var IsHandled: Boolean; var Result: Boolean)
local procedure OnBeforeSelectItemTemplate(var ItemTempl: Record "Item Templ."; var IsHandled: Boolean; var Result: Boolean)
// <<<<<<<<<<
begin
end;
```

### Describe the request

To be able to filter out templates used for import.
Loading
Loading