Archive

Archive for the ‘Implementation’ Category

Turing Trigger program off, update some data, then turn Trigger back on

February 5th, 2014 No comments

Table trigger is important part of Syteline data integrity.  There are many validation logics safe guarded by trigger program.  But in some circumstances, you may want to turn the trigger program off, in order load certain data.  This is specially true during data conversion of your Syteline implementation, you may need to use program to load data from outside data sources.

Below sample program will turn the trigger off, update jobmatl table, then turn the trigger back on again.

declare @SavedState LongListType

, @Infobar InfobarType

EXEC dbo.SetTriggerStateSp

@SkipReplicating  = 1

, @SkipBase         = 1

, @ScopeProcess     = 1

, @PreviousState    = @SavedState OUTPUT

, @Infobar          = @Infobar  OUTPUT

, @SkipAllReplicate = 1

, @SkipAllUpdate    = 1

UPDATE jobmatl

SET pick_date = @Today

FROM #JobmatlForPickList as jm

WHERE jobmatl.RowPointer = jm.RowPointer

exec dbo.RestoreTriggerStateSp

@ScopeProcess    = 1

, @SavedState      =  @SavedState

, @Infobar         = @Infobar OUTPUT

Categories: Development, Implementation Tags:

Add, Change Multi-Sites Replication Rules

January 6th, 2014 No comments

There is simple three steps process for adding/changing replication rules in Syteline.

1) Add/Edit rules in Replication Rules form

Notes: you setup all rules for source site in source site DB.

2) Regen trigger

Open “Replication Management” form,

Regen the replication trigger.

This will make the trigger program in place to replicate transactions from now on.

3) Run the Manual Replication Utility

This will replicate all the existing records, by letting the create date and modified date blank.

Setting Up a Master Site and Shared Tables

December 18th, 2013 No comments

About Shared Tables and Master Sites

In a multi-site environment where there are many sites, large amounts of data, and many users, you may want to set up one site as the master site for an intranet. In that case, certain _all tables and user tables can reside only on the master site database and are shared (read and written to through a SQL view) by other sites on the same intranet. No replication needs to occur for the shared _all and user tables, which can greatly improve system performance.

Steps to Set Up a Master Site and Shared Tables for All Sites on an Intranet

Follow these general steps. Refer to the forms and fields for detailed information. You can share _all tables, or user tables, or both types of tables.

Planning

CAUTION: You must plan your multi-site structure carefully before setting up the shared tables. This requires in-depth understanding of the SQL databases, this application’s replication capabilities, and your corporate financial reporting requirements. Refer to the Multi-Site Planning and Replication Reference documents on our support site for more information.

Set Up All Sites on the Intranet

The following steps assume that you have already used the Configuration Wizard during database server installation to link your multi-site databases.

In the Intranets form, specify all intranets to be used in this multi-site system. If you will be sharing _all tables, define an intranet that will include all the sites that share tables. This cannot be an "External" intranet. All the sites on this intranet must use the same version of this application.

Do not define the master site yet – that will be done later.

In each site and entity, use the Sites/Entities form to specify information about this site/entity and the other entities and sites that it relates to. Each site/entity has a record in this form.

On the System Info tab, specify information about the site. Make sure the Intranet Name, Database Name, and Time Zone are set correctly for each of the sites and entities listed on this form.

A list of linked sites displays automatically in the Link Info tab. The local site record shows links used in transactional replication between the currently selected site database and other site/entity databases. On site records other than the local site, the Link Info tab should show only links to the local site.

Use the Replication Categories form to specify tables, stored procedures, and XML documents that should be replicated and to group them into categories. The installation process creates some categories. Do not delete these standard categories. These categories have been created and tested to ensure that they handle the standard system processes. They should meet most of your needs without requiring any changes.

On the Replication Rules form, set up transactional rules for the Site Admin replication category between this site and all the other sites in the intranet, including the site that will be the master site. (Site Admin data includes tables such as site, intranet, and intranet_shared_table.) You may also want to write other rules to replicate certain categories between certain sites. Even if a category contains _all tables that you are sharing, you probably want to write a replication rule for the category. (Any shared _all tables will not be replicated in this case.) Categories may contain additional base tables or stored procedures that are needed to perform certain functions. The rules you need should be determined in the multi-site planning phase.

On the Replication Management form, click Regenerate Replication Triggers. This ensures that site and intranet data is replicated to all the linked sites.

Set Up the Master Site

Log in to the site that you want to make the master site where the shared tables will exist for the intranet.

On the Intranets form, select this site’s intranet. In the Master Site field, select this site to specify it as the master site for the intranet.

Share _All Tables

Log in to the master site.

On the Intranet Shared Tables form, select this site’s intranet.

A list of the _all tables that can be shared displays. (Not every _all table is listed; some are not available for sharing.)

For tables that you want to be shared between all sites on the intranet, select Shared.

Another way to choose the shared tables is to select the replication categories that you want to share. When you select a Replication Category from the drop-down list and click Select by Category, the system marks _all tables in that category as Shared.

When you have selected all the tables you want to share, select Actions > Save.

Click Process to copy information from the tables at the other sites to the master site’s table, delete the table from the other sites (creating views into the master site tables instead), and regenerate the replication triggers for the other sites. If you have selected several tables and have many sites on this intranet, processing may take a while. The Processing Step area displays the system’s progress.

CAUTION: During processing, the selected tables are removed from all sites on the intranet except the master site. Unsharing (rebuilding the tables at the using sites) is time-consuming – so be very sure that you have everything set the way you want it before clicking the Process button.

During processing, the system validates link setup between the master site and the using sites of an intranet. If it finds a problem, an error message displays and nothing is processed; fix the link and then click Process again.

The Processed field indicates which tables have been processed – for example, if shared, they are now resident only in the master site’s database. (Once a row on the form is marked as Processed, subsequent "Process" runs will not reprocess that row.)

After processing all the tables and sites, the system regenerates the replication triggers at the master site.

Share User Tables

Log in to the master site.

On the Intranet Shared User Tables form, select this site’s intranet.

Two lists of tables display:

The top grid lists user tables that can be shared. You cannot edit this list. You cannot select or clear the option for individual tables, with the exception of the AccountAuthorizations or UserGroupMap tables.

The bottom grid lists tables that contain a column whose base domain is UserNames.UserId or GroupNames.GroupId. The bottom grid is used during set up of shared user tables to identify the tables and columns that may need to be updated if records that were formerly defined in the Usernames or Groupnames tables in the non-master site are moved to the master site, but with different UserId or GroupId values.

If you have custom tables that contain a column whose value comes from base domain UserNames.UserId or GroupNames.GroupId, add your custom table and its associated ID column to the Non-Shareable Tables grid. We recommend that your custom tables refer to the Username or Groupname columns, rather than the ID columns, because the distinct list of Usernames and Groupnames across intranet sites is always the same, whether they are stored in shared tables or per site, and therefore no changes are required for data referencing this base domain.

Select Set up shared user tables to select Shared for all tables in the top grid and Update Referenced ID for all tables in the bottom grid. If you want to maintain the AccountAuthorizations table or the UserGroupMap table at each site, clear the Shared check box for those tables.

Click Process to copy information from the tables at the other sites to the master site’s table, delete the table from the other sites (creating views into the master site tables instead), and regenerate the replication triggers for the other sites. If you have many sites on this intranet or many users and groups, processing may take a while. The Processing Step area displays the system’s progress.

During processing, the system validates link setup between the master site and the using sites of an intranet. If it finds a problem, an error message displays and nothing is processed; fix the link and then click Process again.

The Processed field indicates which tables have been processed – for example, if shared, they are now resident only in the master site’s database. (Once a row on the form is marked as Processed, subsequent "Process" runs will not reprocess that row.)

The Status field indicates whether the user tables are shared or not shared.

After processing all the tables and sites, the system regenerates the replication triggers at the master site.

After processing is complete, you must reapply a valid license document on the master site. If the current master site is not enabled for intranet licensing, you must also apply a valid license document on all other sites on the master site’s intranet.

Adding a New Sharing Site (Changing the Intranet Value of a Site)

NOTE: A site’s intranet value cannot be changed if that site is already part of a sharing intranet, or if the site is a master site.

If you want to add a new site to a existing shared tables intranet, follow these steps:

Log in to the site you want to add.

Make sure the Replication Categories and Replication Rules on this site, and on other sites on the shared tables intranet, are set up to replicate Site Admin data to and from this site as desired.

In the Sites/Entities form, change this site’s Intranet value to the name of the shared table intranet and save the record. When you save the record, the system may display a message telling you that this process may take some time. (It copies shared _all table information to the master site and drops the tables from this site.) Saving the record also regenerates the replication triggers at this site and at the master site.

If you have set up rules between other (non-master) sites and this site, log into those sites and regenerate their replication triggers.

Setting Up Shared User Tables at a New Site

When you are already sharing user tables, and you add a new site to the current master site’s intranet, you may also want to set up the new site to share user tables. To do this:

In the Intranet Shared User Tables form, select the Set up per site user tables check box and click Change Setup Option to change the check box label to Set up shared user tables.

Click Process.The status of the shared tables is checked as each site is processed. If sharing has already been set up for a site, no processing occurs for that site, and the process continues with the next site. When it encounters a site that is not already set up, the site is processed.

Replication to Remote Sites

If there are other intranets with sites that want to replicate (not share) _all or user table data to/from sites in the sharing intranet:

For tables that are shared, set up replication categories/rules between the master site and the sites on the other intranets.

For tables that are not shared, set up replication categories/rules between any/all of the sites in the shared intranet and the sites on the other intranets.

Example

Intranet 1:

Site A (master site. Item_all table is shared)

Site B

Intranet 2:

Site C

Site D

If Site B needs visibility into Site D’s item data, replication rules should be set up from Site D to Site A.

If Site D needs visibility into Site B’s item data, replication rules should be set up from Site A to Site D.

If Site C needs visibility into Site B’s customer data (not a shared table), replication rules should be set up from Site B to Site C.

If a Shared _All Table Has Schema Changes

If one of the shared _all tables at the master site has a schema change, you will need to update the views into the _all table at the user sites on the intranet. To do this:

Log in to the master site and go to the Replication Management form.

Click the Regenerate Views to Master Site button.

Syteline and BarTender Integration

December 16th, 2013 No comments

Starting from Syteline 8.03, the Pick, Pack, Ship function utilize BarTender for bar code label printing.  

Create label templates in Bartender.

The label template in Bartender need to use text file as database source.

Create a sample text file with data like following,

TC280847|123456789012345|DGM17ALS|03/03/2014

When we done, we should have data source like this,

We can then build whatever label file in Bartender.

Note for Syteline Pick, Pack, Ship

A text file is created that will be the basis of the labels created in BarTender.  This file is delivered with the SL install in the DevSetup folder.

The file should be labeled:

· BarTenderDatabaseFile.txt.

The contents of the file will be:

· ShipmentId|PackageId|Hazardous|RateCode|NMFC|MarksExcept|PackageType|PackageDesc|Weight|Item|Desc|UM|Qty|CustItem|Mfg|MfgItem|MfgItemDesc|Lot|Site|Whse|Location|CustNum|CustSeq|ConsigneeName

Create a task in Commander

In Commander, create a new task,

The command type need to be “Commander Script“.  All the details, such as what label template to use, what printer to print to and such, will be specify in the .dd file provided by Syteline.

In Trigger tab, specify the folder to monitor and the file type (.dd) to monitor.

Maintain the Template and Output Directory in Syteline

In Inventory Parameters form,

The output directory will be the place that Syteline drop the .dd file in, and Bartender Commander will monitor this directory for .dd files, it will then change them to .old for Bartender to process.

Enter the label printer on the Printers form

May also maintain a list of Label Template files in Package Label Templates form

Syteline Pick, Pack, Ship Label Printing

A form called “Print Package Label” can be accessed from “Pack Confirmation” or “Ship Master” form.

Print Package Labels

This form is used to select which package labels print jobs should be submitted for the labeling software to print.  Text files will be created and placed into the Output Directory specified on the Inventory Parameters

Printer – The printer that the label will be sent to.

Template Name – The filename of the label file

Copies – The number of copies of each label that should be printed.

Packages Exist – This checkbox will show whether or not packages have been defined for the shipment.

Print Labels By – This radio button set will determine how information will display in the grid if packages have been defined.

The core logic for putting together the .dd file is in Form script: CreateOutputFiles.

       Sub CreateOutputFiles()

Dim Filename As String

Dim Copies As String

Dim oCollection As IWSIDOCollection

Dim i As Integer

Dim Time As String

Dim TextFile(0 To 2) As String

Dim iDay As String

Dim iMonth As String

Dim iYear As String

Dim FileDate As String

Dim Lot As String

Dim Item As String

Dim Desc As String

Dim Qty As String

Dim UM As String

Dim CustItem As String

Dim Mfg As String

Dim MfgName As String

Dim MfgItem As String

Dim MfgItemDesc As String

Dim Package As String

Dim Hazardous As String

Dim RateCode As String

Dim NMFC As String

Dim MarksExcept As String

Dim PackageType As String

Dim PackageDesc As String

Dim Weight As String

On Error GoTo ErrorHandler

oCollection = ThisForm.PrimaryIDOCollection

If ThisForm.Components(“Printer”).ValidateData(True) = False Then

Exit Sub

End If

If ThisForm.Components(“LabelTemplateName”).ValidateData(True) = False Then

Exit Sub

End If

If ThisForm.Variables(“PackagesExistVar”).Value = “1” Then

If ThisForm.Components(“Copies”).ValidateData(True) = False Then

Exit Sub

End If

End If

If ThisForm.Variables(“PackagesExistVar”).Value = “0” Then

If ThisForm.Components(“NumberOfLabelsGridCol”).ValidateData(True) = False Then

Exit Sub

End If

End If

For i = 0 To oCollection.GetNumEntries – 1

If oCollection.GetObjectProperty(“UbSelect”, i) = “1” Then

If ThisForm.Variables(“PackagesExistVar”).Value = “1” Then

Copies = ThisForm.Variables(“CopiesVar”).Value

ElseIf ThisForm.Variables(“PackagesExistVar”).Value = “0” Then

Copies = oCollection.GetObjectProperty(“UbNumberOfLabels”, i)

Qty = oCollection.GetObjectProperty(“UbQtyPerLabel”, i)

Lot = oCollection.GetObjectProperty(“UbLot”, i)

Item = oCollection.GetObjectProperty(“UbItem”, i)

Desc = oCollection.GetObjectProperty(“UbItemDescription”, i)

UM = oCollection.GetObjectProperty(“UbUM”, i)

CustItem = oCollection.GetObjectProperty(“UbCustItem”, i)

Mfg = oCollection.GetObjectProperty(“UbManufacturerId”, i)

MfgName = oCollection.GetObjectProperty(“UbManufacturerName”, i)

MfgItem = oCollection.GetObjectProperty(“UbManufacturerItem”, i)

MfgItemDesc = oCollection.GetObjectProperty(“UbManufacturerItemDesc”, i)

Package = “”

Hazardous = “”

RateCode = “”

NMFC = “”

MarksExcept = “”

PackageType = “”

PackageDesc = “”

Weight = “”

End If

If ThisForm.Variables(“LabelsByVar”).Value = “L” Then

Lot = oCollection.GetObjectProperty(“UbLot”, i)

Item = oCollection.GetObjectProperty(“UbItem”, i)

Desc = oCollection.GetObjectProperty(“UbItemDescription”, i)

UM = oCollection.GetObjectProperty(“UbUM”, i)

Qty = oCollection.GetObjectProperty(“UbQty”, i)

CustItem = oCollection.GetObjectProperty(“UbCustItem”, i)

Mfg = oCollection.GetObjectProperty(“UbManufacturerId”, i)

MfgName = oCollection.GetObjectProperty(“UbManufacturerName”, i)

MfgItem = oCollection.GetObjectProperty(“UbManufacturerItem”, i)

MfgItemDesc = oCollection.GetObjectProperty(“UbManufacturerItemDesc”, i)

Package = oCollection.GetObjectProperty(“PackageId”, i)

Hazardous = oCollection.GetObjectProperty(“Hazard”, i)

RateCode = oCollection.GetObjectProperty(“RateCode”, i)

NMFC = oCollection.GetObjectProperty(“NMFC”, i)

MarksExcept = oCollection.GetObjectProperty(“MarksExcept”, i)

PackageType = oCollection.GetObjectProperty(“PackageType”, i)

PackageDesc = oCollection.GetObjectProperty(“Description”, i)

Weight = oCollection.GetObjectProperty(“Weight”, i)

ElseIf ThisForm.Variables(“LabelsByVar”).Value = “I” Then

Lot = “”

Item = oCollection.GetObjectProperty(“UbItem”, i)

Desc = oCollection.GetObjectProperty(“UbItemDescription”, i)

UM = oCollection.GetObjectProperty(“UbUM”, i)

Qty = oCollection.GetObjectProperty(“UbQty”, i)

CustItem = oCollection.GetObjectProperty(“UbCustItem”, i)

Mfg = oCollection.GetObjectProperty(“UbManufacturerId”, i)

MfgName = oCollection.GetObjectProperty(“UbManufacturerName”, i)

MfgItem = oCollection.GetObjectProperty(“UbManufacturerItem”, i)

MfgItemDesc = oCollection.GetObjectProperty(“UbManufacturerItemDesc”, i)

Package = oCollection.GetObjectProperty(“PackageId”, i)

Hazardous = oCollection.GetObjectProperty(“Hazard”, i)

RateCode = oCollection.GetObjectProperty(“RateCode”, i)

NMFC = oCollection.GetObjectProperty(“NMFC”, i)

MarksExcept = oCollection.GetObjectProperty(“MarksExcept”, i)

PackageType = oCollection.GetObjectProperty(“PackageType”, i)

PackageDesc = oCollection.GetObjectProperty(“Description”, i)

Weight = oCollection.GetObjectProperty(“Weight”, i)

ElseIf ThisForm.Variables(“LabelsByVar”).Value = “P” Then

Lot = “”

Item = “”

Desc = “”

UM = “”

Qty = “”

CustItem = “”

Mfg = “”

MfgName = “”

MfgItem = “”

MfgItemDesc = “”

Package = oCollection.GetObjectProperty(“PackageId”, i)

Hazardous = oCollection.GetObjectProperty(“Hazard”, i)

RateCode = oCollection.GetObjectProperty(“RateCode”, i)

NMFC = oCollection.GetObjectProperty(“NMFC”, i)

MarksExcept = oCollection.GetObjectProperty(“MarksExcept”, i)

PackageType = oCollection.GetObjectProperty(“PackageType”, i)

PackageDesc = oCollection.GetObjectProperty(“Description”, i)

Weight = oCollection.GetObjectProperty(“Weight”, i)

End If

iDay = CStr(Day(Now))

iMonth = CStr(Month(Now))

iYear = CStr(Year(Now))

Time = Format(Now, “hhmmss”)

FileDate = iMonth + iDay + iYear + Time

Filename = ThisForm.Variables(“OutputPathVar”).Value + “Infor” + ThisForm.Variables(“ShipmentVar”).Value + CStr(i) + FileDate + “.dd”

TextFile(0) = “%BTW% /AF=” & “””” & ThisForm.Variables(“TemplatePathVar”).Value & ThisForm.Variables(“FilenameVar”).Value & “””” & ” /PRN=” & “””” & _

ThisForm.Variables(“PrinterVar”).Value & “””” & ” /P /D=” & “””” & “<Trigger File Name>” & “””” & ” /C=” & Copies & “/R=3”

TextFile(1) = “%END%”

TextFile(2) = oCollection.GetObjectProperty(“ShipmentId”, i) & “|” & Package & “|” & Hazardous & “|” & RateCode & “|” & _

NMFC & “|” & MarksExcept & “|” & PackageType & “|” & PackageDesc & “|” & Weight & “|” & Item & “|” & _

Desc & “|” & UM & “|” & Qty & “|” & CustItem & “|” & Mfg & “|” & MfgName & “|” & MfgItem & “|” & _

MfgItemDesc & “|” & Lot & “|” & oCollection.GetObjectProperty(“UbSite”, i) & “|” & _

oCollection.GetObjectProperty(“UbWhse”, i) & “|” & oCollection.GetObjectProperty(“UbLocation”, i) & “|” & _

oCollection.GetObjectProperty(“UbCustNum”, i) & “|” & oCollection.GetObjectProperty(“UbCustSeq”, i) & “|” & _

oCollection.GetObjectProperty(“UbConsigneeName”, i)

System.IO.File.WriteAllLines(Filename, TextFile)

End If

Next i

ThisForm.CallGlobalScript(“MsgApp”, “Clear”, “Prompt”, “SuccessFailure”, _

“mI=CmdSucceeded”, “Process”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”)

Exit Sub

ErrorHandler:

ThisForm.CallGlobalScript(“MsgApp”, “Clear”, “Prompt”, “SuccessFailure”, _

“mI=CmdFailed”, “Process”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”)

End Sub

Custom Label Printing

We may use the similar logic to construct other custom label printing.

1) Need to define two form variables, and get the values during StdFormPredisply

SLShipmentPackages.LabelPathsExistSp( PARMS(RVAR V(TemplatePathVar), RVAR V(OutputPathVar)) )

2) Form method

      Sub CreateOutputFiles()

Dim Filename As String

Dim Copies As String

Dim oCollection As IWSIDOCollection

Dim i As Integer

Dim Time As String

Dim TextFile(0 To 2) As String

Dim iDay As String

Dim iMonth As String

Dim iYear As String

Dim FileDate As String

Dim Item As String

Dim VendorItem As String

Dim InDate As String

Dim Serial As String

On Error GoTo ErrorHandler

If ThisForm.Components(“Printer”).ValidateData(True) = False Then

Exit Sub

End If

If ThisForm.Components(“LabelTemplateName”).ValidateData(True) = False Then

Exit Sub

End If

If ThisForm.Components(“Copies”).ValidateData(True) = False Then

Exit Sub

End If

Copies = ThisForm.Variables(“CopiesVar”).Value

iDay = CStr(Day(Now))

iMonth = CStr(Month(Now))

iYear = CStr(Year(Now))

Time = Format(Now, “hhmmss”)

FileDate = iMonth + iDay + iYear + Time

Filename = ThisForm.Variables(“OutputPathVar”).Value + “ETE” + ThisForm.Variables(“Serial”).Value + FileDate + “.dd”

TextFile(0) = “%BTW% /AF=” & “””” & ThisForm.Variables(“TemplatePathVar”).Value & ThisForm.Variables(“FilenameVar”).Value & “””” & ” /PRN=” & “””” & _

ThisForm.Variables(“PrinterVar”).Value & “””” & ” /P /D=” & “””” & “<Trigger File Name>” & “””” & ” /C=” & Copies & “/R=3”

TextFile(1) = “%END%”

TextFile(2) = ThisForm.Variables(“Item”).Value  & “|” & ThisForm.Variables(“Serial”).Value & “|” & _

ThisForm.Variables(“VendorItem”).Value  & “|” & ThisForm.Variables(“InDate”).Value

System.IO.File.WriteAllLines(Filename, TextFile)

ThisForm.CallGlobalScript(“MsgApp”, “Clear”, “Prompt”, “SuccessFailure”, _

“mI=CmdSucceeded”, “Process”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”)

Exit Sub

ErrorHandler:

ThisForm.CallGlobalScript(“MsgApp”, “Clear”, “Prompt”, “SuccessFailure”, _

“mI=CmdFailed”, “Process”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”)

End Sub

CREATING OUTSIDE OPERATIONS

November 29th, 2013 No comments

If the actual work on an operation is performed at a location other than your shop floor, you must perform special steps to capture the status of the operation for accurate planning, scheduling, and costing. If you do not represent and manage an outside operation properly, the effects can ripple down through subsequent processes, resulting in an over-conservative plan and schedule.

To capture outside operation status, you can:

·         Post time or quantity remaining on the operation (the Operation Scheduling parameter on Shop Floor Control Parameters determines whether hours or pieces remaining are posted). You must specify the operation’s work center as "Outside" on the Scheduling tab on the Work Centers form. Use this method only if you have accurate status information for the outside operation.

·      Cross reference the outside operation to one or more purchase order line items. Time remaining on the operation is calculated using the purchase order line item due dates.

Because you may not necessarily have accurate information to post time or quantity remaining for an outside operation, we recommend you model outside operations using the cross-referenced purchase order method (although you can use that method and also post time or quantity to the operation if you have the status information).

This help topic describes how to set up the cross-referenced purchase order method.

Setting Up the Outside Operation

In summary, to set up the outside operation, you must create a purchased material and issue it to the operation. Follow these steps:

1.    On the Scheduling Shifts form, create a scheduling shift consisting of one shift interval that starts on Sunday at 00:00 hours and ends Saturday at 24:00 hours (7 days x 24 hours). You will be using an infinite resource group to represent this process. Therefore, you need a 24×7 shift to ensure that the planning and scheduling programs process the infinite resource consistently (scheduling ignores the shift and considers the resource always infinite, while MRP and APS consider the resource infinite only while on-shift).

2.    On the Resources form, follow these steps:

1.    Create a new resource for the outside operation.

2.    On the General tab, you can accept the default values for the fields.

3.    Select the Shifts tab. In the ShiftID#1 field, select your 24×7 scheduling shift.

3.    On the Resource Groups form, follow these steps:

1.    Create a new resource group.

2.    In the Infinite Capacity After field, enter 0. This sets the resource to infinite capacity for planning purposes. If your Planning Mode is set to MRP, you can skip this step.

3.    Select the Infinite field to set the resource to infinite capacity for scheduling purposes.

4.    Select the Resources tab. Add your outside resource as a member of the group.

4.    On the Work Centers form, follow these steps:

1.    Create a work center to use for outside operations. You can use the same work center for more than one outside operation.

2.    On the Scheduling tab, select the Outside field. Defining the work center as Outside signals the planning and scheduling processes to perform special calculations so you don’t have to enter the time the parts have been away from the shop. The Outside work center also captures the cost in the "Outside" GL account you set up on the Product Codes form.

3.    Select the Resource Groups tab. Add the infinite resource group you created earlier in this procedure.

5.    On the Job Operations form, follow these steps:

1.    In the WC field, select your outside work center.

2.    In the Fixed Schedule Hours field (if you are using fixed schedule hours) or the appropriate hours per piece/pieces per hour field, enter the number of hours that corresponds to the normal lead time for this outside operation.

3.       NOTE: Regardless of whether you specify Fixed Schedule Hours, the system temporarily switches the operation to fixed schedule hours during the planning or scheduling run.

4.    Select the Resources tab and verify that your infinite resource group is displayed. If it is not, select it now.

5.    Select the Costs tab and enter 0 in all the costing rate fields. The material you issue to the operation will capture the cost of the outside operation.

6.    On the Items form, follow these steps:

1.    Create an item to represent the item your outside operation will be providing.

2.    In the Source field, select Purchased. This allows you to cross reference the material on the bill of material to a PO.

3.    In the Type field, select Other. This Type code prevents the system from creating planned orders for this item (instead, you will use the cross-reference feature).

4.    Consider how to track cost for this purchased item. To apply the cost of the outside operation only to this order, set the Cost Type to Actual, set the Cost Method to Specific, and select the Lot Trackedfield.

7.    On the Job Materials form, follow these steps:

1.    Find the job and your outside operation.

2.    Add a material record for the outside operation item.

3.    In the Quantity field, enter 1.

4.    Select the Lot field (so the quantity is 1 per lot).

Processing the Outside Operation

After setting up the outside operation, follow these steps to process it.

1.    On the Unposted Job Transactions form, enter a transaction to move the WIP from the previous operation to the outside operation.

2.    Use the Post Job Transactions form to post the transaction.

3.    On the Job Operations form, make sure all operations previous to the outside operation are marked as Complete.

4.    Create a cross-referenced purchase order line item. We recommend you do this as soon as you start the operation. Follow these steps:

1.    Open the Job Materials form.

2.    Find your outside material record.

3.    Select the Xref tab.

4.    In the Ref field, select Purchase Order.

5.    Click the X-Ref button to create the cross reference.

6.    Click the X-Ref button again to display the Purchase Order Lines form.

7.    On the General tab, set the Due Date of the cross-referenced PO line item to the date you expect to receive the outside materials from the vendor.

8.    Select the Costs tab. Specify the correct cost on the purchase order.

5.    Physically send the purchase order and materials to your vendor.

6.    Adjust the PO line item due date as necessary.

Receiving the Outside Materials

1.    Use the Purchase Order Receiving form to receive the outside materials from the vendor.

2.    The receipt transaction automatically opens the Job Material Transactions form. On this form, issue the materials to the job.

3.    After you issue the materials, the Post Job WIP Move Transactions form opens automatically. On this form, record this operation complete and move the materials to the next operation.

How SyteLine Calculates Outside Operation Duration

NOTE: If you are not using the cross-referenced purchase order method, and are posting time on the operation, the system plans the outside operation Run Duration normally (based on posted time/quantity).

The system considers the due date of the outside operation’s cross-referenced PO line item when it calculates the operation duration. Basically, the system may reduce or extend the outside operation’s duration, provided the operation is the first open (that is, not posted Complete) operation in the routing.

  • If all of an outside operation’s cross-referenced PO lines are Complete or Filled, the system sets the Run Duration, Move, Queue, and Finish fields to 0.

  • If any PO line has a status of Ordered, and the operation has been started (that is, operation quantity received is greater than 0), the system adjusts the Run Duration as shown in the table below.

If…

SyteLine sets the Run Duration to

This Operation is the first open operation in the routing.

OR

The normal Run Duration value (based on posted time/qty) is greater than the Due Date/time of the latest cross-referenced PO line item – Current Time.

Due Date/time of the latest cross-referenced PO line item – Current Time. The Move, Queue, and Finish hours fields are set to 0.

If the adjusted duration is less than 0, the system sets the operation’s Run Duration to 0.

NOTE: The time value on the Due Date comes from the Supply Time field on the Planning Parameters form.

There are operations previous to this one that are not posted Complete.

Set the Run Duration to the earlier of (1) the normal Run Duration based on posted time/qty or (2) the Due Date/time of the latest cross-referenced PO line item – Current Time.

The typical procedure used for dealing with outside processing is the following:

1) Configure an operation in the job routing as a outside operation.

This is done by specifying a work center which is flagged as an outside work center on the Work Center Scheduling screen. The operation will normally not have any values in the Move, Queue, Setup, Labor Hrs/Pc or Machine Hrs/Pc fields since there is no internal labor or machine cost for an outside operation. The duration of the outside operation is usually entered into the Fixed Sched Hrs field so that the scheduling routine schedules the appropriate amount of time for the operation.

2) Add a material which represents the service.

Add material to the operation with a part number which represents the service being provided by the vendor. The should be a Type (O)ther material and may or may not be in the item master. Set the Ref to "P". The material can be set up as per (L)ot with a Cost for the entire lot or as per (U)nit with a per unit cost for the service.

3) Cross reference the material to a purchase order.

Select Edit/Xref from the job material screen to create a purchase order which will then be linked to the material. The item number, description, quantity ordered, and cost will all be set based on how you set up the material. If the item is in the item master and you have set up and item/vendor cross reference record for the item, the number one ranked vendor will be assigned to the purchase order. Otherwise, you would need to specify the vendor on the PO.

4) Process the internal operations leading up to the outside operations and then send the parts to the vendor.

5) Enter a PO receiving transaction for the service.

When the parts come back from the vendor, you should process a PO receipt. When you do so, the system will see that the PO line item is tied to a job material and will, when the PO receipt is finished, take to the job material issue screen so you can issue the service to the job. You will then be taken to a third "Job WIP Move" window from which you can move the pieces on to the next internal operation in the job’s routing.

6) Process the remaining internal operations and move the parent item into inventory.

At that point you have completed the process. The value of the service will be posted into the WIP Outside cost bucket on the job and will appear on all of the job costing reports as outside cost. Any type (O)ther material tied to an outside operation is considered outside cost. If the Type is (M)aterial for this item, its cost will be considered material cost on the job rather than outside cost.

Syteline Project Costing Transaction, Part 1

October 14th, 2013 No comments

 

 

Project Resource Transaction

Two ways to post: 1) Project Resource Transaction Form; 2) Xref to PO and during PO receiving transactions


Debit

Credit

Note

Material or Other

Material Inventory or

Expense

Defined by material prod code or

On transaction screen

Project Material Account

Defined by Project Product Code

Project OH

Project Applied OH

Project Parameter: Appl OH Acct

Project OH Account

Defined by Project Product Code

Project G&A

Project Applied G&A

Project Parameter: Appl G&A Acct

Project G&A Account

Defined by Project Product Code

 

Project Labor Transactions

Note: only project rate apply in calculation, pay rate has no impact.


Debit

Credit

Note

Labor

Direct Labor Applied Acct

Defined by Department Code, linked from employee to dept

Fixed Labor OH Applied

Defined by Department Code, linked from employee to dept

Variable Labor OH applied

Defined by Department Code, linked from employee to dept

Project Labor Account

Defined by Project Product Code

Project OH

Project Applied OH

Project Parameter: Appl OH Acct

Project OH Account

Defined by Project Product Code

Project G&A

Project Applied G&A

Project Parameter: Appl G&A Acct

Project G&A Account

Defined by Project Product Code

AP Voucher Post to Project


Debit

Credit

Note

AP Journal

Accounts Payable

Defined by Department Code, linked from employee to dept

Project Account

Depended on Project Cost Code entered in AP Voucher Distribution screen, use project labor, project material or project other account, defined in Project Product Code

PC Journal Project OH

Project Applied OH

Project Parameter: Appl OH Acct

Project OH Account

Defined by Project Product Code

Project G&A

Project Applied G&A

Project Parameter: Appl G&A Acct

Project G&A Account

Defined by Project Product Code

Site name must be the same as configuration name for event system to work

March 10th, 2012 No comments

Infor is really terrible sometime when it comes to documentation.  For example, for the application event system to work, you have to make your site name exactly match with your configuration name, and this basic and critical information is not listed in installation guide and event system guide.

You can only discover this when running Log Monitor on the Utility Server for event service (run  infor\Syteline\LogMonitor.exe, then filter with “MGEvent”).

Beside sigh, what can you do?

Syteline Financial Excel Addon

February 22nd, 2012 No comments

I have found the Syteline Financial Excel Addon a handy tool for building financial statement, much better than the financial statement writer inside Syteline.  Many long time Syteline user still have hard time understand the old financial statement writer, ever after using it for years.  But the Excel add on is really straight forward, especially for accounting people.

But before it’s latest update, the Addon has two major problems.  One is missing the must need Net Income function; another one is a bug in calculating year-end figures.  The latest update get them both fixed. 

Now the only problem for the Addon is performance.  Since each function, like SLGLBAL() is actually a query to DB, if you are constructing a multiple years detail balance sheet comparison, the report can easily has hundreds of function calls, and it will take time to run.  And if you don’t have direct DB connection, say you are Infor SaaS hosting customer,  you need to rely on web service connection, the performance would ever worst. 

But anyway, for most of user that can run report within LAN, the performance is pretty acceptable.

Just for reference, the following tables are used by the Excel based financial tool:

Ledger
Pertot
chart_bp
periods

parms
chart
site

Product Version

In SyteLine < 8.02.00

unitcd{1..4}

In SyteLine > 8.02.00

chart_unitcd{1}

Account Distribution under actual costing, average cost method

February 18th, 2012 No comments

PO Receive (INV PRCV)

Item ABC current on-hand qty = 100, cost = $1.4

PO purchase price $1.17, with 17% VAT tax, material cost = $1. Receive qty = 100

After received, qty = 200, average cost = $1.2

 

  Debit Credit Comment
Inventory 120   100 pcs on after received unit cost of $1.2
Inventory   20 If current item unit cost is differ than PO receiving cost, adjustment entry created
Voucher Payable   100  

AP Voucher Generation (APV)

  Debit Credit Comment
Account Payable   117  
Voucher Payable 100    
Tax Liability 17    

AP Payment (APP)

  Debit Credit Comment
Account Payable 117    
Cash   115  
Exch Rate G/L 2   For foreign currency, if the exchange rate is differ from the time AP generated, G/L will be recognized.

 

Misc Receive (MRCP)

Current onhand qty = 100, unit cost = $1.4

Misc receive qty = 100, unit cost = $1

After received, qty = 200, unit cost = $1.2

  Debit Credit Comment
Inventory 120   100 pcs on $1.2 unit cost
Inventory   20 If current item unit cost is differ than misc receiving cost, adjustment entry created
Inventory Adj   100  

 

Misc Issue (MRCP)

Current unit cost $1.2, misc issue out 100 pcs

  Debit Credit Comment
Inventory   120 100 pcs on $1.2 unit cost
Expense, Cost Account 120    

 

Job Material Issue (INV JOI)

Current unit cost $1.2, issue qty 100 pcs

  Debit Credit Comment
Inventory   120 100 pcs on $1.2 unit cost
WIP Material 120    

 

Job Labor Posting (INV JOL)

  Debit Credit Comment
COGS Labor   40  
WIP Labor 40    

 

Job Completion (INV JFIN)

  Debit Credit Comment
FG Inventory(material) 120    
WIP Material   120  
FG Inventory (labor) 40    
WIP Labor   40  

 

Order Shipment (INV CSH)

  Debit Credit Comment
FG Inventory(material)   120 uses accounts on stockroom location where item was shipped from
COGS Material 120   uses accounts from End User type if one exists, else from Distribution Accounts for Product Code
FG Inventory (labor)   40  
WIP Labor 40    

 

Order Invoicing (INV JOL)

  Debit Credit Comment
Accounts Receivable 100   uses accounts from End User type if one exists, else from Accounts Receivable Parameter
Sales   100 uses accounts from End User type if one exists, else from Distribution Accounts for Product Code

 

AR Payment (ARP)

  Debit Credit Comment
Accounts Receivable   100 uses the A/R account specified on the invoice in A/R Posted Transaction Detail
Cash 98   uses cash account on bank code
Exch Rate G/L 2   For foreign currency, if the exchange rate is differ from the time invoice generated, G/L will be recognized.

What do you need to know for putting Syteline in your China branch company

February 5th, 2012 No comments

Today, many, if not most, US manufacturers have operation in China.  They either build out manufacturing facilities to take advantage of global supply chain, or setup sales/marketing operation to catch China market potential, and may be both.  With US headquarter and operation running in Syteline, it is nature to put Syteline into China branch as well.

But what do you need to know in order to have a successful Syteline implementation in China?

From 1996 to 2004, I was the country manager for Symix/Frontstep/Mapics in China.  I had involved in over 130 Syteline implementations in China, many of those, especially the early ones, are US manufacturing companies.  I was also leading the major Chinese localization project in Syteline, like Chinese Financial Module, which is still the central part of Syteline Chinese country pack today.   After coming back to US in 2006, my Syteline consulting practice still crosses Pacific ocean often.  Just last year, I completed three Syteline 8 implementation projects for US companies in China.  With all that said, I think I am in a good position to talk about what you need to know for a successful Syteline implementation in China.

Let’s run down the list.

1) What additional software components you will need?

If you need the Chinese user interface, and/or if you want to keep your financial book in Syteline, you will need the China Country Pack, which is an extra software component you need to purchase from Infor.  The Country Pack includes the Chinese UI and a Chinese Financial Module to handle the special regulation requirement for accounting system in China.

2) Where should you put your servers?

You have options of centralizing servers in your US headquarter, or putting server locally in your China branch.  They both have pros and cons.
With centralized servers, you can utilize knowledge and resource in US HQ for system administration, so you don’t need a dedicated IT person in your China branch.  You may also leverage your hardware/software investment that you already made in US HQ.
The biggest drawback for centralizing server is performance.  In general, the remote access from China to your US HQ will be slow.  Increase the internet bandwidth in both of your HQ and China branch would help, but may not fully resolve the problem, due to the bottleneck may be in the internet connection between the two countries.  Also, the so called “Great Wall” firewall setup/controlled by Chinese government may sometime block your connection without reason.  Recently, one of my client even experience connection problem with Infor Saas hosting server.  By the way, proxy server is not a solution to get around the Great Firewall, since Syteline would not work at all with Proxy.

So if you do want to centralize your servers in US HQ, do set it up and have your users in China try it out first, to see if they are OK with the connection and performance.

3) How should you setup your multi-sites environment?

The multi-sites structure would of course be based on your company situation.  Normally, if you need to consolidate financial statement, you will need to setup a site DB and an entity DB, both of them are in CNY currency, for your China branch.

When creating DB for your China site, just remember to use CNY as domestic currency and select proper China time zone for it.  By doing that, your China user will see the correct local time zone, even though your server may located in US.

If you are going to do data replication between your US site and China site, ITAR compliance may need to be taking into consideration.  You may need to modify your replication rule.

4) Multi-currency is a must.

You would most likely need to setup multi-currency for your China branch DB, with CNY as domestic currency and USD/others as foreign currency.  When setting up USD currency, make sure to check the “Rate is Divisor” box.  This will reduce the transaction rounding error.

5) What do you need to know about the China VAT tax system?

In some extent, China VAT tax system may be considered simpler than US sales tax system, since there are not that many differ tax jurisdictions as US does, and tax rates do not change as often as US.

But you do need to setup VAT tax system in both sales and buy side.  Tax paid with your purchasing will be credit against to your tax liability in sales side.  Please check out my another post for detail in setting up China VAT tax system.

In that nature of China VAT tax system, a VAT tax invoice you collected from your supplier actually has cash value, just like bank notes.  And that is why Chinese government has tie control on VAT Invoice.  VAT invoice can only printed out from a dedicated tax control machine that issued from government, and the invoice# is pre-assigned and controlled by government.  Syteline invoice# can only used for internal control, not really the one that you can present to your customer.

So, to help accounting people reconcile Syteline invoice# and official VAT invoice#, a modification would be required to put VAT Invoice# into various AR forms, like “Invoice, Debit/Credit Memo”, “AR posted transaction”, and “AR payment quick application”, and may also need in AR reports like “AR Aging”.

6) What is the Chinese Financial Module, and what is that for?

Chinese accounting regulation requires an unique voucher number for each accounting transaction (combined multiple debit/credit entries), something similar to control number today we have in Syteline 7 & 8.  But the early version of Syteline (before and include SL6) don’t have that function, and that was the major driving force for developing Chinese Financial Module back in 2001.

Today, Chinese Financial Module is still crucial for any Syteline implementation in China.  It is pretty much a GL system that allow user to enter/maintain voucher, to print voucher form, and to print Chinese accounting book.  Those are generally required for compliance with Chinese accounting regulation.

In terms of Financial Statement, local Chinese government do have some standard format requirement.  But I have found that with Syteline Excel Addon, it is quite easy to fulfill whatever format requirement is.

7) Other special consideration during implementation.

There are some other special considerations that need to be taken into account during your Chinese implementation.  Here I list a few.  The solution to each of them may vary, depend on company situation.

  • Chinese accounting regulation has some standard on top level chart of account setup.  In most case, you company will need to follow that standard.  If you are going to consolidate financial statement to US headquarter, some sort of account mapping will need to setup properly before hand.
  • Duty free imported material keep in bound location.  Custom regulation requires that those duty free imported material to be kept in special bound location, and has full tractability to prove that they are only used on products that will export out later.
  • Company may be required to declare their earning and pay income tax in monthly base, instead of yearly based in US.  That means you may need to do GL adjustment to move P/L to retain earning in monthly base.
  • It is normal accounting practice in China to fully allocate your actual overhead cost into COGS in monthly based.

8) Implementation, local support consideration.

Needless to say, a suitable consulting team is crucial to your implementation project success.  Capabilities you should look for are,

  • Understand both western and Chinese business culture and best practice.
  • Deliver training and consulting service in both English and Chinese.
  • Able to facilitate better communication between US headquarter and China local team
  • Provide long term local support.