(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
==Introduction== | ==Introduction== | ||
Aluminium Extrusion manufacturing usually will based on a variable length and a fixed linear weight to determine the price before quote to customer. | |||
<br /> | <br /> | ||
Line 139: | Line 139: | ||
'''Formula:''' <br /> | '''Formula:''' <br /> | ||
1. Unit price per Pcs = Unit price per Kg x Length x Linear Weight | |||
Weight | 2. Unit price per Kg = Unit price per Pcs / Length / Linear Weight | ||
3. Total Weight = Length x Linear Weight x No of Pcs | |||
<br /> | <br /> | ||
''Both formula results are rounding up to 4 decimals.'' | ''Both formula results are rounding up to 4 decimals.'' |
Latest revision as of 08:44, 6 November 2015
Introduction
Aluminium Extrusion manufacturing usually will based on a variable length and a fixed linear weight to determine the price before quote to customer.
Updates
Last Customisation Update : 06 Nov 2015
Criterias
Maintain Stock Group
[Stock | Maintain Stock Group...]
Stock group will be used as the Product Grade to categorise the stock items list.
Maintain Stock Item
[Stock | Maintain Stock Item...]
1. Stock Master Data.
Types Field Name Data Types Length Usage STD Code String 30 Product Code, eg. EA 6035 (NA) STD Description String 200 Product Name STD 2nd Description String 200 Aluminium size to be display in sales tax invoice, eg. 38.10 x 1.80 thk STD Base UOM String 10 stock unit of measurement, usually either enter as PCS or KG or Roll DIY Linear Weight (Kg/M) Float Size :10
SubSize: 4Linear Weight (Kg/M) value
Sales Documents Entry
1. Sales documents entry are:-
- Quotation
- Sales Order
- Delivery Order
- Invoice
- Debit Note
- Credit Note
2. Insert and update the following DIY fields & Script into above mentions sales documents in Tools | DIY | SQL Control Center...
a) DIY Fields
Type Field Name Data Types Length DIY-F Length Float Size: 10
SubSize: 4DIY-F LinearWeight Float Size: 10
SubSize: 4DIY-F UnitPrice_Kg Float Size: 10
SubSize: 4DIY-F UnitPrice_Pcs Float Size: 10
SubSize: 4DIY-F Qty_Kg Float Size: 10
SubSize: 4DIY-F Qty_Pcs Float Size: 10
SubSize: 4
b. DIY Script: OnGridColumnValueChange event
var
FComServer : Variant;
function ComServer: Variant;
begin
if FComServer = Null then begin
FComServer := CreateOleObject('SQLAcc.BizApp');
end;
Result := FComServer;
end;
var
lSQL, lCode : String;
cdsTemp : TClientDataSet;
D : TDataSource;
begin
FComServer := null;
D := TDataSource(Self.FindComponent('dsDocDetail'));
cdsTemp := TClientDataSet.Create(nil);
lCode := D.DataSet.FindField('ItemCode').AsString;
lSQL := Format('SELECT UDF_LinearWeight FROM ST_ITEM WHERE Code=%s ',[QuotedStr(lCode)]);
cdsTemp.Data := ComServer.DBManager.Execute(lSQL);
//select item and batch to retrieve the linear weight from item master
if SameText(editingfield,'ItemCode') or
SameText(editingfield,'Batch') then begin
D.DataSet.FindField('UDF_LinearWeight').Value := cdsTemp.FindField('UDF_LinearWeight').Value;
D.DataSet.FindField('UDF_Length').Value := 0;
end;
//select batch as "Length value"
if SameText(editingfield,'Batch') then begin
D.DataSet.FindField('UDF_Length').Value := D.DataSet.FindField('Batch').Value;
end;
//key-in unit price per kg to convert into unit price per pcs
if SameText(editingfield,'UDF_UnitPrice_Kg') or
SameText(editingfield,'Batch') then begin
D.DataSet.FindField('UDF_UnitPrice_Pcs').AsFloat := (D.DataSet.FindField('UDF_UnitPrice_Kg').AsFloat*
D.DataSet.FindField('UDF_Length').AsFloat*
D.DataSet.FindField('UDF_LinearWeight').AsFloat);
end;
//key-in unit price per pcs to convert into unit price per kg
if SameText(editingfield,'UDF_UnitPrice_Pcs') or
SameText(editingfield,'Batch') then begin
D.DataSet.FindField('UDF_UnitPrice_Kg').AsFloat := (D.DataSet.FindField('UDF_UnitPrice_Pcs').AsFloat/
D.DataSet.FindField('UDF_Length').AsFloat/
D.DataSet.FindField('UDF_LinearWeight').AsFloat);
end;
//to compute the subtotal either based on unit price per pcs or per kg
if (D.DataSet.FindField('UDF_Length').Value <> 0.0000) or
(D.DataSet.FindField('UDF_LinearWeight').Value <> 0.000) or
(D.DataSet.FindField('UDF_Qty_Pcs').Value <> 0.0000) or
(D.DataSet.FindField('UDF_UnitPrice_Pcs').Value <> 0.0000) then begin
D.DataSet.FindField('Qty').Value := D.DataSet.FindField('UDF_Qty_Pcs').AsFloat;
D.DataSet.FindField('UnitPrice').Value := D.DataSet.FindField('UDF_UnitPrice_Pcs').AsFloat;
D.DataSet.FindField('UDF_Qty_Kg').AsFloat := (D.DataSet.FindField('UDF_Length').AsFloat*
D.DataSet.FindField('UDF_LinearWeight').AsFloat*
D.DataSet.FindField('UDF_Qty_Pcs').AsFloat);
end;
FComServer := null;
cdsTemp.Free;
end.
Formula:
1. Unit price per Pcs = Unit price per Kg x Length x Linear Weight 2. Unit price per Kg = Unit price per Pcs / Length / Linear Weight 3. Total Weight = Length x Linear Weight x No of Pcs
Both formula results are rounding up to 4 decimals.
See also
- Others Customisation