Aluminium Extrusion Manufacturing

From eStream Software
Revision as of 08:16, 6 November 2015 by Csloo (talk | contribs) (Created page with "==Introduction== <br /> ==Updates== Last Customisation Update : 06 Nov 2015 ==Criterias== ===Maintain Stock Group=== ''[Stock | Maintain Stock Group...]'' Stock group will...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Introduction


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: 4
Linear 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 GSM Float Size: 10
SubSize: 2
DIY-F Width Float Size: 10
SubSize: 2
DIY-F Length Float Size: 10
SubSize: 2
DIY-F PKT Float Size: 10
SubSize: 2
DIY-F Weight_MT Float Size: 10
SubSize: 4
DIY-F Weight_KG Float Size: 10
SubSize: 4
DIY-F TotWeight_MT Float Size: 10
SubSize: 4
DIY-F TotWeight_KG Float Size: 10
SubSize: 4



2. Formula:

Weight KG = ((GSM x Width x Length)/3100)/PKT 
Weight MT = Weight KG/1000 

Both formula results are rounding up to 4 decimals.

3. Under Tools | DIY | SQL Control Center...Browse to Stock | Stock Item and insert the event "OnBeforeSave" with the DIY Script below:

 Var M : TDataSource;
 
 begin
   M := TDataSource(Self.FindComponent('dsAccess'));
   M.DataSet.Edit;
   M.DataSet.FindField('UDF_Weight_KG').Value := SimpleRoundToEx((((M.DataSet.FindField('UDF_GSM').AsFloat* 
                                                 M.DataSet.FindField('UDF_Width').AsFloat* 
                                                 M.DataSet.FindField('UDF_Length').AsFloat)/3100)/M.DataSet.FindField('UDF_PKT').AsFloat),-4);
                                                
   M.DataSet.FindField('UDF_Weight_MT').Value := SimpleRoundToEx((M.DataSet.FindField('UDF_Weight_KG').AsFloat/1000),-4);                                                  
                                              
 end.



b. DIY Script:

 var
   FComServer : Variant;
 
 function ComServer: Variant;
 begin
   if FComServer = Null then begin
     FComServer := CreateOleObject('SQLAcc.BizApp');
   end;
   Result := FComServer;
 end;
 
 var
   lBizObj,S,S2 : Variant;
   lSQL    : String;
   lCdsDataList : TClientDataSet;
   D : TDataSource;
 
 begin
   FComServer   := null;
   lCdsDataList := TClientDataSet.Create(nil);
   D := TDataSource(Self.FindComponent('dsDocDetail'));
   try
     lSQL                 := 'Code='+ QuotedStr(D.DataSet.FindField('ItemCode').AsString);
     lBizObj              := ComServer.BizObjects.Find('ST_ITEM');
 
     lCdsDataList.XMLData := lBizObj.Select('UDF_GSM, UDF_Width, UDF_Length, UDF_PKT, UDF_Weight_KG, UDF_Weight_MT',lSQL,'','SX',',','');
     if SameText(EditingField, 'ItemCode') or
     SameText(EditingField, 'Qty') then begin
        D.DataSet.edit;
        D.DataSet.FindField('UDF_GSM').Value := lCdsDataList.FindField('UDF_GSM').Value;
        D.DataSet.FindField('UDF_Width').Value := lCdsDataList.FindField('UDF_Width').Value;
        D.DataSet.FindField('UDF_Length').Value := lCdsDataList.FindField('UDF_Length').Value;
        D.DataSet.FindField('UDF_PKT').Value := lCdsDataList.FindField('UDF_PKT').Value;
        D.DataSet.FindField('UDF_Weight_KG').Value := lCdsDataList.FindField('UDF_Weight_KG').Value;
        D.DataSet.FindField('UDF_Weight_MT').Value := lCdsDataList.FindField('UDF_Weight_MT').Value;  
        D.DataSet.FindField('UDF_TotWeight_KG').value := D.DataSet.FindField('UDF_Weight_KG').AsFloat*D.DataSet.FindField('Qty').Value;
        D.DataSet.FindField('UDF_TotWeight_MT').value := D.DataSet.FindField('UDF_Weight_MT').AsFloat*D.DataSet.FindField('Qty').Value; 
     end;
 
   finally
     lBizObj    := null;
     FComServer := null;
     lCdsDataList.Free;
   end;
 end.


See also