当前位置:文档之家› NC开发流程一览表说明

NC开发流程一览表说明

NC开发流程一览表说明
NC开发流程一览表说明

单表体的卡片型单据制作

单表体的单据:指装载界面数据的聚合VO表头为空,只存在一组表体VO。UI工厂设计了接口ISingleController,单表体单据界面控制类应实现此接口,并实现isSingleDetail方法。前期准备:单据注册,模板初始化等等,在构造好类框架后要修改界面控制类。

1.注册单据类型

2.注册VO对象如下:

public String[] getBillVoName(){

Return new String[]{

SampleVo.class.getName(),

SampleHeadVO.class.getName(),

SampleHeadVo.class.getName(),

};

}

public String getPKField(){

Return “pk_sample”;

}

public String getChildPKField(){

Return “pk_sample”;

}

注意此时的表头,表体的VO类一致。

3.是否走平台

public int getBusinessActionType(){

Return nc.ui.trade.businessaction.IBusinessActionType.BD;

}

4.注册按钮

public int[] getCardButtonAry(){

Return new int[]{

IBillButton.Query,

IBillButton.Add,

IBillButton.Edit,

IBillButton.Line,

IBillButton.Save,

IBillButton.Cancel,

IBillButton.Refresh,

};

}

最重要的一步,实现isSingleDetail方法。

public Boolean isSingleDetail(){//单表体明细

//单表体

Return true;

}

ISingleController用来支持单表头或单表体的单据,因此,当isSingleDetail方法返回true时,单据为单表体;当返回false时,单据为但表头。

单表头的卡片型单据制作

除了显示有很大差异外,单表头于单表体的唯一区别在于isSingleDetail方法的返回值。另外,在单表头界面增加浏览按钮和去掉行操作按钮。

虚拟主子表的卡片型单据制作

虚拟主子表单据:指的是那种数据来源于一张表,却根据(自定义的)特定规则虚拟主子表的结构,将一部分放到表头,剩下的字段放到表体的单据。它通常用于数据的分组,即把数据根据(自定义的)特定字段的值进行分组。字段值相等的数据自然的被归为一类,然后,把特定字段放到表头显示,属于它的一组数据在表体列表显示,形成了标准主子表的结构。由于数据分组的特定规则取决于业务,因此UI工厂无法做缺省的实现。但加载数据库数据一般都在查询时完成,所以可以定制查询事件的行为,这需要为单据创建按钮事件处理器,并重载查询时基类调用的方法。加载数据的步骤如下:

1.第一步,与前面的步骤一样,并配置好界面控制器类。

2.在UI类重载按钮事件处理器类的方法,如下:

Protected CardEventHandler createEventHandler(){

Return new SampleCardEventHandle(this.getUIControl());

}

3.构造按钮事件处理器类,重载onBoQuery方法。如下:

Protected void onBoQuery() throws Exception{

UIDialog querydialog = getQueryUI();

If(querydialog.showModel())==(INormalQuery)querydialog;

String strWhere=query.getWhereSql();

If(strWhere==null)

strWhere=”1=1”;

strWhere=”(”+strWhere+”) and (isnull(dr,0)=0)”;

//将查询对话框条件加到整个查询条件后

If(getHeadCondition()!=null)

strWhere=strWhere+”and”+getHeadCondition();

//查询数据表数据

SuperVO[] queryVos=getBusinessAction().queryHeadAllData(

Class.forName(getUIController().getBillVoName()[1]),

getUIController().getBillType(),

strWhere);

//清空缓冲数据

getBUfferData().clear();

if(queryVos==null||queryVos.length==0){

getBillUI().setBillOperate(IBillOperate.OP_INIT);

getBufferData().setCurrentRow(-1);

}else{

//根据规则将数据进行分组

AggregatedValueObject[] bills=createBillVOs(queryVos);

getBillUI().setBillOperate(IBillOperate.OP_NOTEDIT);

getBufferData().setCurrentRow(0);

}

}

/**

*对一组VO数据进行分类

*

*@param待分类的VO数据

*@return 分类的结果

*/

Private AggregatedValueObject[]//聚合值对象数据

createBillVOs(CircularlyAccessibleValueObject[]vos){//循环获得值对象数组

if(vos==null||vos.length==0)

return null;

//按照年度,月度将数据分组

HashMap tmpMap=Hashlize.hashlizeObjects(vos,new VOHashKeyAdapter(new String[]{“vyear”,”vmonth”}));

AggregatedValueObject[] bills=new AggregatedValueObject[tmpMap.size()];

Int i=0;

Iterator it=tmpMap.keySet().iterator()

For(;it.hasNext();i++){

Object key=it.next();

ArrayList al=(ArrayList)tmpMap.get(key);

Bills[i]=new nc.vo.trade.pub.HYBillVO();

//设置表头数据

bill[i].setChildrenVO(

(SuperVO[]).toArray(new SuperVO[0]));

}

Return bills;

}

对数据增,删,改的控制

因为是虚拟主子表的数据结构,它在进行数据的操作时需要额外的控制。这个问题的本质是在将前台数据写回后台时,需将前台的主子表结构还原为单表结构。

1.数据修改时的控制,这包括新增和编辑

在编辑(行操作)完毕,点击保存按钮。程序会从界面取得被修改的数据,这些数据被标志成新增,删除,修改等状态,提交给后台处理。对于真正的主子表,表头数据和标题数据会分别存储到对应的表中,但对于虚拟主子表的单据,主表数据加上字表数据的一行才构成数据表中的一行记录。这个问题的解决方法如下:

在获取界面VO时做控制,方法是重载UI类重载基类的getChangedVOFramUI方法:Public AggregateValueObject getChangeVOFromUI()Throws Exception

{

AggregatedValueObject vo=super.getChangedVOFromUI();

If(vo!=null){

//将聚合VO的主表设为空

Vo.setParentVO(null);

}

Return vo;

}

通过将聚合VO的主表舍为空,后台不会再处理主表的数据。

在编辑时,将需要存储的主表数据放到字表中。这需要控制行操作的行为,方法是时间处理器重载基类的行操作方法:

/**

*增行方法

*/

Public void onBoLineAdd() throws https://www.doczj.com/doc/617879334.html,ng.Exception{

Super.onBoLineAdd();

addDefaultData();

}

/**

*粘贴行的方法

*/

Protected void onBoLinePaste() throws Exception{

Super.onBoLinePaste();

addDefaultData();

}

/**

*插入行方法

*/

Protected void onBoLineIns() throws Exception{

super.onBoLineIns();

addDefaultData();

}

/**

*将表头数据放到表体中

*/

Private void addDefaultData() throws Exception{

Int

currentBodyrow=getBillCardPanelWrapper().getBillCardPanel().getBillTable().getSelected Row();

Object

vyear=getBillCardPanelWrapper().getBillCardPanel().getHeadItem(“vyear”).getValue(); getBillCardPanelWrapper().getBillCardPanel().setBodyValueAt(vyear,currentBodyrow,”vye ar”);

Object

vmonth=getBillCardPanelWrapper().getBillCardPanel().getHeadItem(“vmonth”).getValue ();

getBillCardPanelWrapper().getBillCardPanel().setBodyValueAt(vmonth,currentBodyrow,”vmonth”);

}

可以看到,在每个意在更新数据的行操作方法中,都会调用将表头相关数据放到表体当前操作行的方法。

控制保存后否再次查询数据库,以取得数据库最新数据。对于真正的主子表,在数

据库更新数据后重新查询一下最新数据并向前台返回,是具有意义的,并且根据表头数据的主键即可获得表头数据和表体数据。而虚拟主子表,如前所述,数据的组织在UI端完成,后台没有足够的信息区查询和组织数据。因此,此时只能向前台返回当前的数据。UI工厂使用IRetCurrentDataAfterSave借口做此标志,如果UI类的getUserObject方法返回的对象实现了此接口,则在保存后部重新读取数据库。我们加了一个RetCurrentDataAfterSaveImpl类,让它实现IRetCurrentDataAfterSave接口。

如:

Public Object getUserObject(){

Return new RetCurrentDataAfterSaveImpl();

}

需要注意的是:从程序健壮性考虑,我们应该加一些前台校验类,依照前面介绍,我们创建前台校验类,并在单据类型中注册。

3.对数据的删除控制

这需要让事件处理器重载基类的onBoDelete方法,如:

Protected void onBoDelete() throws Exception{

If(MessageDialog.showYesNoDlg(

getBillUI(),”档案删除”,”是否确认删除该基本档案?”)!=UIDialog.ID_YES)

return;

AggregateValueObject modelVo=getBufferData().getCurrentVO();

//将聚合VO的表头设为空

modelVo.setParentVo(null);

getBusinesssAction().delete(

modelVo,

getBillUI()._getDate().toString(),

getBillUI.getUserObject());

getBufferData().removeCurrentRow();

if(getBufferData().getVOBufferSize()==0)

getBillUI().setBillOperate(IBillOperate.OP_INIT);

else

getBillUI().setBillOperate(IBillOperate.OP_NOTEDIT);

}

注:删除单据时,并不涉及到界面的数据,因此只需控制BillUIBuffer中的缓存的当前VO。

多子表卡片型单据

多子表单据在界面显示上通常是表头+多页签的表体,每一个页签代表一个子表。在UI 工厂中,这种单据得到了抽象,主要从以下两个角度:

1.对UI显示界面的抽象。多子表单据的UI类不使用BillCardUI做基类,而是继承与一

个新的UI基类,MultiChildBillCardUI,它封装了多个页签的界面显示。

2.对VO数据的抽象。在NC应用中,主子表数据存储在聚合VO中,它支持一个主表

+一个子表的结构,但是,这种结构不适合于多子表的情况。因此,UI工厂设计了接口IExAggVO,需要装载多子表数据的聚合VO类,应该实现此接口,并实现它的关键方法。

制作多子表单据的步骤

定义多子表VO

多子表Vo是聚合VO,同事又像一个装载多个字表数据的容器,因此它必然继承自AggregatedValueObject的类层次,又实现多子表VO的接口,IExAggVO,具体如下:Public class SampleExAggVO extends nc.vo.trade.pub.HYBillVO implements nc.vo.trade.pub.IExAggVO{

//用来装载多子表数据的hashmap

Private HashMap hmChildVOs=new HashMap();

/**

*返回各个子表的编码

*必须与单据模板的页签编码对应

*/

Public https://www.doczj.com/doc/617879334.html,ng.String[] getTableCodes(){

Return new String[]{“sample_table1”,”sample_table2”};

}

/**

*返回各个子表的中文名称

*创建日期:(01-3-20 17:36:56)

*/

Public https://www.doczj.com/doc/617879334.html,ng.String[] getTableNames(){

Return new String[]{“字表一”,”字表二”};

}

/**

*取得所有子表的所有VO对象

*/

Public CircularlyAccessibleValueObject[] getAllChildrenVO()

{

ArrayLIst all=new ArrayList();

For(int i=0;i

CircularlyAccessibleValueObject[] cvos=getTableVO(getTableCodes()[i]);

If(cvos!=null)

all.addAll(Arrays.asList(cvos));

}

Return(SuperVO[]) all.toArray(new SuperVO[0]);

}

/**

*返回某个字表的VO数组。

*/

Public CircularlyAccessibleValueObject[]

getTableVO(String tableCode){

return(CircularlyAccessibleValueObject[])

hmChildVOs.get(tableCode);

}

/**

*为特定子表设置VO数据

*/

Public void setTableVO()(String tableCode,CircularlyAccessibleValueObject[] vos){ hmChildVOs.put(tableCode,vos);

}

/**

*缺省的页签编码

*/

Public String getDefaultTableCode(){

Return getTableCodes()[0];

}

Public nc.vo.pub.SuperVO[] getChildVOsByParentId(String tableCode,String parentid)

{

Return null;

}

Public java.util.HashMap getHmEditingVOs() throws Exception{

return null;

}

Public https://www.doczj.com/doc/617879334.html,ng.String getParaentId(SpuerVO item){

Return null;

}

}

代码的解释:

HYBillVO类是UI工厂定义的继承自AggregatedValueObject的类。它实现了AggregatedValueObject的抽象方法。

返回的子表编码必须与单据模板定义的页签编码一致,这样数据才能正确显示。2.定义单据界面控制类

需要重点强调的是以下代码

public String[] getBillVoName(){

return new String[]{

//聚合VO

SampleExAggVO.class.getName(),

//主表

SampleHeadVO.class.getName(),

//子表一

SampleBodyVO.class.getName(),

//子表二

SampleBody_BVO.class.getName()

};

}

3.定义事件处理类

如果没有特殊的按钮事件处理,现在暂时可以不创建

4.定义业务代理类

对于多子表的单据,一定要创建业务代理类并重载loadChildDataAry方法如下所示:Public class SampleCardDelegator extends BDBusinessDelegator{

/**

*取得不同表体页签的数据

*/

Public Hashtable loadChildDataAry(String[] tableCodes,String key)throws https://www.doczj.com/doc/617879334.html,ng.Exception{ //根据主表主键,取得子表一的数据

SampleBodyVO[]

AVOs=(SampleBodyVO[])queryByCondition(SampleBodyVO.class,”pk_sample=’”+key+”’and isnull(dr,0)=0”);

//根据主表主键,取得子表二的数据

SampleBody_BVO[]

BVOs=(SampleBody_BVO[])queryByCondition(SampleBody_BVO.class,”pk_sample=’”+key+”’and isnull(dr,0)=0”);

//将查询数据放入hashtable并返回

Hashtable dataHashTable = new Hashtable();

If(AVOs!=null&&AVOs.length>0){

dataHashTable.put(tableCodes[0],AVOs);//将查询的数据子表一的数据放入hashtable }

If(BVOs!=null&&BVOs.length>0){

dataHashTable.put(tableCodes[1],BVOs);//将查询的数据子表二的数据放入hashtable }

Return dataHashTable;

}

}

5.定义单据UI类

创建一个继承MultiChildBillCardUI类的单据UI类,并关联上先前创建的界面控制类,业务代理类:

/**

*关联上界面控制类

*/

Protected ICardController createController(){

Return new SampleCardController();

}

/**

*关联上业务代理类

*/

Protected BusinessDelegator createBusinessDelegator(){

Return new SampleCardDelegator();

}

如何制作列表型单据

列表型单据统一的界面基类是ListCardUI,统一的事件处理基类是ListEventHandler,统一的界面控制接口为IListController。

对于数据表满足真正的主子表结构的单据,要开发单表头,单表体,多子表的单据非常简单,只是在类的继承关系上有所不同,因此在制作列表型单据时,绝大部分过程都可以仿照卡片型单据的制作。

标准的列表型单据和卡片型单据相比,不同之处是:

列表型单据的控制器实现IListController接口,并且应该把按钮的设置实现在getListButtonAry 方法中,如:

Public int[] getListButtonAry(){

Return new int[]{

IBillButton.Query,

IBillButton.Edit,

IBillButton.Line,

IBillButton.Save,

IBillButton.Cancel,

IBillButton.Refresh,

};

}

与多子表的卡片单据相比,有两个不同:

1.多子表列表型单据的UI类继承自MultiChildlistUI类;

2.多子表列表型单据的界面控制类实现IListController接口。

需要注意的是:列表型单据也应该创建自己的业务代理类,负责加载多页签的数据。

单表头和单表体的列表型单据:

因为列表界面的表头和表体都是由列表组成的,所以单表头和单表体对于列表型单据在界面显示上是一致的。UI工厂定义了ISingleController接口来指定单据时单表头还是单表体,因此,如果单据的界面控制类实现ISingleController接口,辅之以配套的单据模板,就可以实现单列表的界面。需要注意的是:1.列表型单据不支持新增,而卡片型单据可以新增.2.就是列表型单据支持UI初始化时自动加载数据,而卡片型单据要初始化时自动加载,只能在构造函数中调用数据加载的方法。

虚拟主子表的列表型单据:

制作虚拟主子表的列表型单据,基本策略和办法还是和卡片型单据一样。因为列表型单据在UI初始化时可以调用加载单据数据的方法。

BillListUI初始化时调用initBillData方法加载单据数据因此我们在UI子类重载此方法:

/**

*初始化时加载单据数据

*/

Protected void initBillData(String strWhere)throws Exception{

If(strWhere==null)

strWhere=”1=1”;

strWhere = “(“+strWhere+”)and(isnull(dr,0)=0)”;

SuperVO[] queryVos=

getBusiDelegator().queryHeadAllData(Class.forName(getUIControl().getBillVoName()[1]),getUICo ntrol().getBillTye(),strWhere);

//清空缓冲数据

getBufferData().clear();

if(queryVos==null||query.length==0){

setBillOperate(IBillOPerate.OP_INIT);

setListHeadData(queryVos);

getBufferData().setCurrentRow(-1);

}else{

//将VO数据分组

AggregatedValueObject[] bills=createBillVOs(queryVos);

getBufferData().addVOsToBuffer(bills);

//将表头数据加到表头的列表中

setListHeadData(getBufferData().getAllHeadVOsFromBuffer());

setBillOperate(IBillOperate.OP_NOTEDIT);

getBufferData().setCurrentRow(0);

}

}

/**

*param待分类的VO数据

*@return 分类的结果

*/

Private AggregatedValueObject[] //聚合值对象数组

createBillVOs(CircularlyAccessibleValueObject[] vos){//循环获得值对象数组If(vos==null||vos.length==0)

Return null;

//将数据按年度,月度分组

HashMap tmpMap=Hashlize.hashlizeObject(vos,new VOHashKeyAdapter(new

String[]{“vyear”,”vmonth”}));

AggregatedValueObject[] bills = new AggregatedValueObject[tmpMap.size()];

Int I = 0;

For(Iterator it = tmpMap.keySet().iterator();it.hasNext();i++){

Object key= it.next();

ArrayList al =(ArrayList)tmpMap.get(key);

Bills[i] = new nc.vo.trade.pub.HYBillVO();

Bills[i].setParentVO((CircularlyAccessibleValueObject)al.get(0));

Bill[i].setChildrenVO((SuperVO[])al.toArray(new SuperVO[0]));

}

Return bills;

}

这部分数据加载的逻辑和前面虚拟主子表的卡片单据例子很相似,只是它多了一步操作—将查询得到的表头数据加到表头的列表中。

管理型单据制作

管理型单据时列表型单据和卡片型单据的组合,因此,它同时具备这两种单据的特征,也就是说,管理型单据具有两种视图,并且可以在这两种视图之间进行切换。另外,管理型单据对这两种视图又做了功能上的划分---卡片视图和列表视图都可用于数据的显示,但是一旦要对列表视图的数据进行编辑操作时,界面自动切换单卡片视图。

管理型单据统一的界面基类是BillManageUI,统一的事件处理类是ManageEventHandler,统一的界面控制类为AbstractManageController。这个类实际上实现了ICardController和IListController两个接口。

标准的管理型单据:

1.使单据UI类继承BIllManageUI。

2.使单据界面控制器类继承AbstractManageController类,这个类实现了卡片型单据控制器

的通用接口ICardController和列表型单据控制器的通用接口IListController,因此我们的界面控制器类实际上需要实现卡片和列表控制器的所有方法,除了单据类型,单据VO 的名字,是否走平台,主表主键名,字表主键名这些通用的设置以外,这里重点展示对于按钮的定义,如下:

/**

*取得列表界面的按钮

*/

Public int[] getListButtonAry(){

Return new int[]{

IBillButton.Query,

IBillButton.Add

IBillButton.Edit,

IBillButton.Line,

IBillButton.Save,

IBillButton.Delete,

IBillButton.Cancel,

//卡片按钮

IBillButton.Card,

IBillButton.Refresh,

};

}

/**

*取得卡片界面的按钮

*/

Public int [] getCardButtonAry(){

Return new int[]{

IBillButton.Query,

IBillButton.Add,

IBillButton.Edit,

IBillButton.Line,

IBillButton.Save

IBillButton.Delete,

IBillButton.Cancel,

//返回按钮

IBillButton.Return,

IBillButton.Refresh,

};

}

3.当单据不走平台时,单据UI类应该重载基类的createBusinessDelegator方法,并返回不

走平台的业务代理类。如下:

Protected BusinessDelegator createBusinessDelegator(){

Return new BDBusinessDelegator();

}

这样就完成了标准管理性的单据的制作。

多子表的管理型单据:

1.单据UI类应该继承MultiChildManageUI。

2.单据控制器类与标准管理型单据相同,但是VO的配置应按照多子表卡片型单据所示。另外,就像制作卡片型多子表单据一样,加载多子表的数据需要设置一个业务代理类,我们完全可以重用卡片型多子表单据例子中的业务代理类。

这样就完成了多子表管理型单据的制作。

虚拟多子表的管理型单据:

1.单据UI类继承BillManageUI。

2.单据控制器类继承AbstractManageController。

3.当单据不走平台时,单据UI类应该重载基类的createBusinessDelegator方法

4.查询时必须将查询得到的数据加到表头列表中,如下所示:

Protected void onBoQuery() throws Exception{

UIDialog query = getQueryUI();

If(querydialog.showModal()==UIDialog.ID_OK){

INormalQuery query = (INormalQuery)querydialog;

String strWhere = query.getWhereSql();

If(strWhere==null)

strWhere=”1=1”;

strWhere=”(“+strWhere+”)and(isnull(dr,0)=0)”;

if(getHeadCondition()!=null)

strWhere = strWhere+”and”+getHeadCondition();

SuperVO[] queryVos =

getBusinessAction().queryHeadAllData(Class.forName(getUIController().getBillVoName()[1]), getUIController().getBillType(),strWhere);

清空缓冲数据

getBufferData().clear();

if(queryVos==null||queryVos.length==0){

getBillUI().setBillOperate(IBillOperate.OP_INIT);

getBillUI().setListHeadData(queryVos);

getBufferData().setCurrentRow(-1);

}else{

AggregatedValueObject[] bills = createBillVOs(queryVos);

getBufferData().addVOsToBuffer(bills);

//将表头数据加到表头列表中

getBufferData().getAllHeadVOsFromBuffer();

getBillUI().setBillOperate(IBillOperate.OP_NOTEDIT);

getBufferData().setCurrentRow(0);

}

}

}

5.和虚拟多子表的卡片型单据一样,管理型单据应创建事件处理类,负责查询时组织数据

以及删除和保存单据时去掉表头VO,但是,由于管理型单据的表头是列表,UI工厂将此列表VO缓存到界面上,因此,在修改单据和新增单据后,应该同时更新表头列表的VO数据。虚拟主子表的表头是一个逻辑的表头,在保存单据时,我们首先取得界面改

变的VO数据,并将其表头VO设置为空,但是,这保证了保存操作的正确性,却给自动更新表头列表的VO数据制造了麻烦,解决的办法是在保存后将VO数据的表头VO还原,代码如下:

/**

*单据保存后调用的方法

*/

Protected void setAddNewOperate(Boolean isAdding,AggregatedValueObject billVO)throws Exception{

If(billVO!=null&&billVO.getChildrenVO().length!=0){

CircularlyAccessibleValueObject pvo= billVo.getChildrenVO()[0];

//还原表头VO

billVO.setParentVO(pvo);

super.setAddNewOperate(isAdding,billVO);

}

}

setAddNewOperate方法在单据半寸后会被调用,它将去更新表头列表的VO数据。6.删除时须将表头列表中对应行删除,如下所示:

Protected void onBoDelete() throws Exception{

If(MessageDialog.showYesNoDlg(getBillUI,”档案删除”,”是否确认删除该基本档案?”)!=UIDialog.ID_YES)

Return;

AggregatedValueObject modelVo = getBufferData().getCurrentVO();

modelVo.setParentVO(null);

getBusinessAction().delete(modelVo,getUIController().getBillType(),getBillUI()._getData().toS tring(),getBillUI().getUserObject());

//将列表中该行删除

getBillUI().removeListHeadData(getBufferData().getCurrentRow());

getBufferData().removeCurrentRow();

if(getBufferData().getVOBufferSize()==0)

getBillUI().setBillOperate(IBillOperate.OP_INIT)

else

getBillUI().setBillOperate(IBillOperate.OP_NOTED)

}

树卡片类型单据

UI工厂提供了左树右单据这种界面形式,根据右边单据的界面类型又可以分为树卡片型单据和树管理型单据,树型结构为单据提供了更为丰富的界面表达形式,对客户来说具有很好的导航效果,NC-UAP提供了产生树形结构的工具类,我们可以有两种方法生成树:

1.通过ID和ParentID,树的最基本元素是节点,节点既可以作为父节点,又可以作为

孩子节点。每个节点都有一个ID标识自身,如果采用孩子节点链接父亲节点的数据结构,那么节点还需要一个域存储父亲节点的ID,这个ID是ParentID。

2.通过编码和编码规则,这里的编码规则实际上是将编码分段,然后通过判断编码长

度构造树,假设编码规则是“1.2.2”,它意味着第一级树节点的编码只有一个字符长

度,第二级树节点的编码长度是三个字符长度,第三极树节点是五个字符长度。如果有4个节点A,B,C,D,他们的编码分别是0,000,001,00100,那么构造的树的根节点是A,A有两个子节点B和C,C的子节点是D。

这两种构造树的方法并不影响单据的制作,选择哪种策略完全取决于业务的要求和数据的构成形态。

树卡片型单据的类结构:

树卡片型单据统一的界面基类是BillTreeCardUI,它继承自BillCardUI。统一的事件处理基类是TreeCardEventHandler,它继承自CardEventHandler。统一的界面控制类接口为ITreeCardController,它继承自IcardController。

开发树卡片型单据的步骤:

标准的树卡片型界面:(构造树数据类)

树的数据类封装了树的构造规则,如何获取数据等,按照ID构造的树,其数据必须实现IVOTreeDataByID接口,而按编码构造的树,其数据类必须实现IVOTreeDataByCode接口。

例子如下:(按ID为准)

Public class SampleTreeCardData implements IVOTreeDataByID{

/**

*取得节点的ID域名称

*/

Public String getIDFieldName(){

Return “pk_sample”;

}

/**

*取得节点的PARENT_ID域名称

*/

Public String getParentIDFieldName(){

Return null;

}

/**

*取得节点的显示域名称

*/

Public String getShowFieldName(){

Return “pk_sample”;

}

/**

*取得树的数据

*/

Public SuperVO[] getTreeVO(){

SuperVO[] treeVOs = null;

Nc.ui.trade.bsdelegate.BusinessDelegator business = new

nc.ui.trade.bsdelegate.BDBusinessDelegator();

Try{

treeVOs = business.queryByCondition(SampleHeadVO.class,null);

}catch(https://www.doczj.com/doc/617879334.html,ng.Exception e){

e.printStackTrace();

}

Return treeVOs;

}

}

创建界面控制器类:

树卡片型单据的界面控制器类应实现ISingleController和ITreeCardController接口。在这里需要强调一下几个方法:

/**

*单据的增加删除时,是否自动维护树结构

*/

Public Boolean isAutoManageTree(){

Return true;

}

Public String[] getBillVoName(){

Return new String[]{

SampleVO.class.getName(),

SampleHeadVO.class.getName(),

SampleBodyVO.class.getName()

};

}

Public Boolean isSingleDetail(){

Return true;

}

在定义VO信息时,可以看到,主表VO和在数数据类中定义的是一致的。

创建界面UI类:

界面UI类应该继承BillTreeCardUI类,并重载下面的方法:

/**

*取得树的数据类

*/

Protected IVOTreeData createTreeData(){

Return new SampleTreeCardData();

}

Protected ICardController createController(){

Return new SampleTreeCardController();

}

上面几步就完成了一个标准的树卡片类型单据的制作。

多子表的树卡片型单据:

学会了多子表卡片型单据并结合上面的标准树卡片型单据的制作,制作多子表的树卡片型单据非常简单,构造业务代理类负责加载多页签,这与多子表卡片型单据相同,不同在于:

1.需要构造树数据类,这与上面一节讲的完全相同。

2.单据UI类需要继承MultiChildBillTreeCardUI类。

3.单据控制器类需实现ITreeCardController和ISingleController接口并重载

isSingleDetail,令其返回ture。

单表的树卡片型单据:

上面两个例子中,单据界面控制器类的isSingleDetail方法返回都是true,因此意味着对应每个表头数据,都需要加载对应的表体数据。如果单据没有表体,显然无需再加载表体数据,这种单据的制作只需要针对标准的树卡片界面修改单据模板(移除表体页签),并按如下代码修改界面控制器类:

Public String[] getBillVoName(){

Return new String[]{

SampleVO.class.getName(),

SampleHeadVO.class.getName(),

SampleHeadVO.class.getName()

};

}

Public Boolean isSingleDetail(){

Return false;

}

树管理类型单据

开发标准的树管理型单据的步骤:

这与树卡片型单据很相似,在这里我们引入一个新表,它组成了树的数据,又是单据主表的主表。

Public class SampleTreeManageData implements IVOTreeDataByID{

Public String getIDFieldName(){

Return “pk_materialclass”;

}

Public String getParentIDFieldName(){

Return null;

}

Public String getShowFieldName(){

Return “vname”;

}

Public SuperVO[] getTreeVO(){

SuperVO[] treeVOs = null;

BusinessDelegator business = new BDBusinessDelegator();

Try{

treeVOs = business.queryByCondition(MaterialclassVO.class,null);

}catch(Exception e){

e.printStackTrace();

}

Return treeVOs;

}

}

如果依据编码构造树,代码如下:

Public class SampleTreeManageDataByCode implements IVOTreeDataByCode{

/**

*包含编码值的域

*/

Public String getCodeFieldName(){

Return “vcode”;

}

/**

*编码规则

*/

Public String getCodeRule(){

Return “2.2”;

}

Public String getShowFieldName(){

Return “vname”;

}

Public SuperVO[] getTreeVO(){

SuperVO[] treeVOs = null;

BusinessDelegator business = new BDBusinessDelegator();

Try{

treeVos = business.queryByCondition(MaterialclassVO.class,null);

}catch(Exception e){

e.printStackTrace();

}

Return treeVOs;

}

}

创建界面控制器类:

界面控制器类需继承AbstractTreeManageController类,需要配置的信息和其他管理型单据一样,配置的VO信息如下:

Public String[] getBillVoName(){

Return new String[]{

SampleVO.class.getName(),

SmpleHeadVO.class.getName(),

SampleBodyVO.class.getName()

}

}

界面UI类需继承BillTreeManageUI类,需要重载的方法是:

Protected AbstractManageController createController(){

Return new SampleTreeManageController();

}

Protected IVOTreeData createTreeData(){

Renturn new SampleTreeManageData();

}

上面就完成了一个标准的树卡片类型单据的制作。

多子表的树管理型单据:

1.需要创建树数据类。

2.接买呢控制器类需要继承AbstractTreeManageController类。

3.接买呢UI类需要继承MultiChildTreeManageUI类,并重载下面的方法:Protected IVOTreeData createTreeData(){

Return new SampleTreeManageData();

}

虚拟主子表的树管理型单据:

像虚拟主子表的管理型单据一样,我们可以用一张表虚拟成两张表构成单据的表头和表体。虚拟主子表的树管理型单据的步骤和制作标准树管理型单据的步骤完全一致,只不过在表头表体数据组织上稍有不同。为了构造虚拟主子表,我们需要控制这个环节,方法是创建事件处理器类,并使它继承TreeManageEventHandler类,重载onTreeSelected方法:

Public void onTreeSelected(VOTreeNode selectnode){

Try{

onQueryHeadData(selectnode);

}catch(BusinessException ex){

getBillUI().showErrorMessage(ex.getMessage());

ex.printStackTrace();

}catch(Exception e){

getBillUI().showErrorMessage(e.getMessage());

e.printStackTrace();

}

}

Private void onQueryHeadData(VOTreeNode selectnode) throws Exception{ Class voClass = Class.forName(getUIController().getBillVoName()[1]);

SuperVO vo = (SuperVO)voClass.newInstance();

String strWhere = “(isnull(dr,0)=0)”;

If(vo.getParentPKFieldName() != null)

strWhere = “(“+strWhere+”)and”+vo.getParentPKFieldName()+”=’”

//取得节点树聚合主键值作为表头的parent_pk值

+selectnode.getData().getPrimaryKey()+”’”;

SuperVO[] queryVos = getBusinessAction().queryHeadAllData(

voClass,getUIController().getBillType(),strWhere

);

//清空缓冲数据

getBufferData().clear();

if(queryVos != null && queryVos.length != 0){

//将数据分组

AggregatedValueObject [] bills = createBillVOs(queryVos);

getBufferData().addVOsToBuffer(bills);

getBillUI.setListHeadData(getBufferData().getAllHeadVOsFromBuffer());

getBufferData().setCurrentRow(0);

getBillUI().setBillOperate(IBillOperate.OP_NOEDIT);

}

Else

{

getBillUI().setListHeadData(queryVos);

getBufferData().setCurrentRow(-1);

getBillUI().setBillOperate(IBillOperate.OP_INIT);

}

}

控制删除,行操作的方法和虚拟主子表的管理型单据一样。

单表头的树管理型单据:

单表头的树管理型单据和标准的树管理型单据的唯一区别在于前者的表体数据位空,因此在实现的时候,其控制器类应实现ISingleController接口,并使isSingleDetail方法返回false。VO的配置等关键信息均与后者一致。

列表卡片类型单据的制作步骤:

以标准的列表卡片型单据为例,而其他几种变体的实现,则可以与前面的一一对应。创建界面控制类:

界面控制类应实现IListCardController接口,这个借口继承了ICardController,只是增加了一个方法,我们应该实现此方法,如下:

/**

*取得列表数据单元的类名

*/

Public String getSelectVoClassName(){

Return MaterialclassVO.class.getName();

}

创建界面UI类:

界面UI类继承ListCardUI类,我们介绍两个基本的操作:

1.加载列表数据:因为基类并不自动加载列表数据,我们可以自己加上列表数据的加载方法,并在UI构造器中调用.

/**

*取得列表数据的查询条件

*/

Public String getListVOQueryCondition(){

Return null;

}

/**

*构造器调用的加载列表数据的方法

*/

Private void initListData(){

Try{

//调用基类加载列表数据的方法

addVoToList();

}catch(Exception e){

e.printStackTrace();

}

}

通过控制器类配置的列表VO数据的类名和此处定义的查询条件,我们即可获得列表数据。

2.加载表头数据

当前列表(点击)选择一个节点时,会触发查询单据表头数据的操作。我们可以定义加载表头数据的查询条件,并结合控制器配置的单据主表VO类,即可查询出表头的数据,如下所示:

/**

*表头数据的查询条件

*/

Public String getHeadVOQueryCondition(CircularlyAccessibleValueObject

selectedVO){

MaterialclassVO listvo = (MaterialclassVO) selectedVO;

Return “pk_materialclass=’”

//根据当前选择节点的逐渐

+listvo.getPrimaryKey()+”’”;

}

渲染列表,定义显示属性

我们可以很灵活地定义列表显示的内容,因为在Swing中,列表的渲染定义由LIstCellRenderer接口定义,因此我们创建自己的渲染类,并实现此接口。

Public class SampleListCellRender extends jLabel implements

ListCellRenderer,Serializable{

Protected static Border noFocusBorder;

Public SampleListCellRender(){

Super();

noFocusBorder = new EmptyBorder(1,1,1,1);

setOperate(true);

setBorder(noFocusBorder);

}

Public Component getListCellRendererComponent(JList list,Object value,int

index,Boolean isSelected,Boolean cellHasFocus){

setComponentOrientation(list.getComponentOrientation());

if(isSelected){

setBackground(list.getSelectionBackground());

setForeground(list.getSelectionForeground());

}

Else{

setBackground(list.getBackground());

setForeground(list.getForeground());

}

MaterialclassVO vo= (MaterialclassVO)value;

//取得VO对象的名称属性值

setText(vo==null?””:vo.getVname());

setEnabled(list.isEnabled());

供应链基本流程图

供应链操作基本流程 一、销售管理基本流程 1.1 销售报价基本流程 1.2 手工录入销售订单基本流程 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-新增],保存,审核。 注:①销售订单的单价应提前维护,自动带出,不可手工修改单价。 ②销售订单上应录入完整的合同相关信息,比如:交货日期、销售方 式等。 1.3 关联销售订单下推生成发货通知单 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-维护],在销售订单时序薄界面,点‘下推’按钮,下推生成发货通知,保存,审核。 1.4 关联发货通知单下推 仓管用户进入系统主界面,点击[供应链]-[销售管理]-[发货通知]-[发货通知-维护],在销售发货序时簿,点‘下推’按钮,下推生成销售出库,保存,审核(出货后)。 注意:①销售出库单的源单类型是:发货通知单 ②销售出库单应列明:SN号 1.5 关联销售出库单下推生成销售发票 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售出库]-[销货出库-维护],在销售出库序时簿中,点‘下推’按钮,下推[生成销售发票],保存,审核,钩稽。 注意:①销售发票的源单类型是:销售出库 ②往来科目设置:应收帐款 ③发票是:实际开出的发票,不是系统自动带出的。 1.6 销售发票钩稽 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售发票]-[销货发票-维护],在销售发票序时簿中,单击[钩稽],选择本次要钩稽的销

售发票、费用发票和对应的销售出库单,输入[本次钩稽数量],再单击[钩稽]。 1.7 销售退货 仓库用户进入系统主界面,点击[供应链]-[销售管理]-[销售出库]-[销货出库-新增],选择红字,保存,审核。 1.8 销售红字发票 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售发票]-[销货发票-新增],选择红字填制,保存,审核,钩稽 1.9 销售赠品类 ①赠送商品需要核算成本的,应通过“其他出库单”处理; ②不需要核算成本的,可以通过“虚仓出库单”处理。 用户进入系统主界面,点击[供应链]-[仓存管理]-[虚仓管理]-[虚仓出库],填制完成后保存、审核。 二、MRP计划基本操作(暂定) 2.1 手工录入采购申请单 MRP用户进入系统主界面,点击[供应链]-[采购管理]-[采购申请]-[采购申请单-增加],保存、审核。 采购申请单由计划部门依据生产计划、物料需求计划、库存情况等,向采购部门提请购货申请。 注意:①采购申请单由芳制单,玉超审核。 ②采购申请单业务类型选择为外购入库;委外加工的采购申请单业 务类型选择为订单委外。 三、采购管理操作基本流程: 3.1关联采购申请单下推生成采购订单 采购用户进入系统主界面,点击[供应链]-[采购管理]-[采购申请]-[采购申请单-修改]。 在采购申请单序时簿中,查询到手工生成的所有采购申请单。选中需要下推的单据,点[下推]-[生成采购订单],保存,审核。 注意:①采购订单由采购员制单,总审核。 ②采购申请单只有已审核的才可以下推生成采购订单。

投资业务的基本流程复习过程

四川瑞达峰投资有限公司 投资业务的基本流程 投资业务的基本流程(流程图): 1、客户以书面形式提出投资申请(申请的主要内容:客户基本情况、金额、用途、担保方式、还款来源及方式等),并提供相关资料。 2、客户经理受理,填制《投资业务调查申请表》,经客户经理及部门负责人、业务副总签字同意后,交风控部登记,并经风控部负责人及风控副总同意后,安排尽职调查人员同客户经理一道调查。 3、到企业进行实地调查(评估)求证,并补充收集相关资料 4、根据调查情况,认为有可操作性的项目客户经理撰写《调查报告》,并将撰写好的《调查报告》经本人签字,交部门负责人、分管业务副总审签同意后,连同相关资料递交风控部作投资尽职审查;被否定的投资项目,填写《被否定投资业务调查结论表》经业务副总、风控副总、总经理签字同意后,客户经理尽快通知申请人

5、风控部尽职调查人员撰写《尽职调查报告》、并将撰写好的《尽职调查报告》经本人签字,交部门负责人审签同意后,连同相关资料递交合规部进行法律审查 6、法律审查人员根据审查情况撰写《法律审查报告》,经本人签字,交部门负责人、分管风控副总审签同意后,交投审会办公室(投审会办公室设在合规部) 7、投审会办公室经办人员报告投审会主任委员(由总经理兼任,并作为投审会的主持人),由投审会主任委员确定会议召开时间。投审会办公室负责筹备投审会会议,并通知各位委员开会时间,提前一天将项目审议相关报告发给各位委员审阅,并作好会议记录。会上采取一个项目一议的原则:先由客户经理介绍调查情况;再由风控部尽职调查人员作《尽职调查报告》;后由合规部法律审查人员作《法律审查报告》。投审会委员再进行提问审议、投票,并当场公布投票结果 8、特殊情况下,客户经理可申请投审跑签程序。客户经理填写跑签项目报告,交分管风控副总、总经理审签项目会签审批表(跑签)后,开始执行投审跑签程序。

沃尔玛供应链流程图

供应链管理从20世纪8O年代开始提出以来,经过多年的发展已基本成熟。供应链管理已从企业内部扩展到了企业外部,已从企业内部信息化扩展到企业分销网络、战略合作客户和合作伙伴之间的信息共享与协作。企业之间的竞争逐渐演变为供应链之间的竞争,企业与合作伙伴之间的合作关系日趋紧密,大家关注的重心不再是产业链上利益分配的比例,而是如何扩大可供分配的利益,是以协同商务、相互信任和双赢机制作为企业共同的运作模式。所谓供应链管理,是通过运用管理技术、信息技术和过程控制技术,达到对整个供应链上的信息流、物流、资金流、工作流和价值流的有效规划和控制,将客户、供应商、制造商、销售商和服务商等合作伙伴连成一个完整的网链结构模式,建立起一个共享的信息平台,构建成一个具有很强竞争力的、协同化环境的供应链战略联盟。 供应链管理的问题集中在以生产和销售同步为目的的自动订货系统、依托精确的数据决策进行的自动补货系统,以及最佳物流支撑的零库存目标管理。在这方面,宝洁与沃尔玛的供应链协同管理模式堪称典范。 宝洁-沃尔玛模式的形成 如果问,是哪个公司使得“供应链”这个词家喻户晓,那就是沃尔玛和宝洁。20世纪80年代,在这两家公司开始合作之前,美国零售商和制造商分享的信息很少,双方总是围绕着商品价格和货架位置争夺控制权,情形就像今日中国之零供关系。而随着宝洁与沃尔玛的供应链协同管理模式的确立,美国零售商和供应商的目光开始转向如何加强供应链管理以降低综合运营成本,如何提高顾客的满意度,而不再仅仅盯住渠道控制权。 宝洁,全球最大的日用品制造企业;沃尔玛,全球最大的商业零售企业。它们之间的合作并非一帆风顺。宝洁与沃尔玛经历过长时间的“冷战”。宝洁总是企图控制沃尔玛对其产品的销售价格和销售条件,而沃尔玛也不甘示弱,针锋相对,威胁要终止宝洁产品的销售,或把最差的货架留给它。 当然,双方很快认识到深度合作的好处。1987年,为了寻求更好的手段以保证沃尔玛分店里“帮宝适”婴儿纸尿裤的销售,宝洁负责客户服务的副总裁Ralph Drayer和沃尔玛的老板Sam Walton终于坐到了一起。那一时刻,被业界认为是协同商业流程革命的开始。 “宝洁-沃尔玛模式”的形成其实并不复杂。最开始时,宝洁开发并给沃尔玛安装了一套“持续补货系统”,具体形式是:双方通过EDI(电子数据交换)和卫星通讯实现联网,借助于信息系统,宝洁公司能迅速知晓沃尔玛物流中心内的纸尿裤的销售量、库存量、价格等数据。这样不仅能使宝洁公司及时制定出符合市场需求的生产和研发计划,同时也能对沃尔玛的库存进行单品管理,做到连续补货,防止滞销商品库存过多,或畅销商品断货。 而沃尔玛则从原来繁重的物流作业中解放出来,在通过EDI从宝洁公司获得信息的基础上,及时决策商品的货架和进货数量,并由MMI(制造商管理库存)系统实行自动进货。沃尔玛将物流中心或者仓库的管理权交给宝洁公司代为实施,这样沃尔玛不仅不用从事具体的物流活动,而且由于双方不用就每笔交易的条件(如配送、价格问题)等进行谈判,大大缩短了商品从定货、进货、保管、分拣到补货销售的整个业务流程的时间。 具体作业流程是:沃尔玛的各个店铺都制定了一个安全库存水平,一旦现有库存低于这个水平,设在沃尔玛的计算机就会通过通讯卫星自动向宝洁公司的纸尿裤工厂定货。宝洁公司在接到定货后,将订购商品配送到各店铺,并实施在库管理。与整个

基本业务流程及简要说明

基本业务流程及简要说明 一、基本业务流程图 二、流程简要说明 整个销售流程(参见基本业务流程图)可以简单地分为三个阶段,下面我们将对每一个步骤进行简要概述。 第一阶段:销售准备阶段 第二阶段:与客户沟通阶段 第三阶段:促成合作阶段

本讲对基本的业务流程及具体环节做一个简单的介绍,熟知业务流程是每一个销售人 员开始进入工作的前提,在以后的各讲中我们会对每一个环节的具体内容和技巧进行更为详细 地讲解。 卓博销售人员的职业特性 卓博信息科技有限公司的核心业务是Jobcn专业的人才网站,采用以电话销售为主的经营手段,即通过使用电话、传真等通信技术,来实现有计划、有组织、并且高效率地扩大顾客群、提高顾客满意度、维护顾客等市场行为的手法。公司的销售人员主要通过电话进行销售和客户服务工作,属于电话直销业务范畴。 一、职业特点: 通过电话与客户建立起信任关系,是电话销售的基础。在销售领域内,客户信任来源于三个方面:对你公司的信任、对电话销售人员的信任、对你所提供服务(产品)的信任。在通常情况下,对销售人员层面的信任关系是最重要的销售成功保证。 二、职业障碍: 1、外界障碍: 客户不愿意交流 客户没时间进行交流 客户一边接你的电话,一边在做其他事情,不专心于交流 2、语言与理解障碍( 客户讲外语听不懂) 客户使用方言听不明白 3、心理上的障碍 主观对电话销售认识不正确

对于客户拒绝感到恐惧 对于长时间的电话工作感到厌烦 不会控制自己在电话销售中的情绪 三、成功电话销售人员的职业特征 1、勤奋的态度 电话销售人员的勤奋主要表现在通过多种途径寻找销售线索,打电话与客户进行有效沟通以及对客户进行跟踪服务。勤奋是优秀销售业绩的保证。 2、商业意识强 要有分辨有价值客户的敏锐性,从而形成对客户的营销数据进行科学管理。, 3、产品与服务的专家 我们的工作主要是针对企业招聘服务的。所以首先销售人员应该对人力资源的管理知识非常熟悉,此外对网站本身为客户提供的产品与服务了如指掌,特别要让客户明白的是使用我们的网站能为他们的人员招聘带来的好处和便利。 电话销售人员有时候需要在电话中帮助客户进一步明确客户的需求,甚至帮助客户看到客户未来的但现在还没有意识到的需求,以提高你在客户心目中的价值。 4、电话沟通能力强 毫无疑问,电话销售人员的电话沟通能力是其关键成功因素中最重要的一个,关于沟通能力,那就是提高你的声音感染力、与客户建立融洽关系、提问的技巧、倾听的技巧、表达你的同理心和确认,以便理解无误。 (1)积极 积极的心态会使你的声音听起来也很积极而有活力。在你给客户打电话时,还是客户打电话给你时,你都应向着对销售有利的、推动销售进展的方向思考问题。 (2)热情 热情可以感染客户,一时的热情并不苦难,重要的是在任何时刻都保持高度的热情。 (3)节奏 节奏一方面是指自己讲话的语速,另一方面也是指对客户所讲问题的反应速度。 (4)语气 语气要不卑不亢。即不要客户感觉到我们是在求他们,也不要客户感觉到我们有股盛气凌人的架势,例如:“你不知道我们公司啊?!”

供应链基本流程

供应链基本流程 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

供应链操作基本流程 一、销售管理基本流程 1.1 销售报价基本流程 1.2 手工录入销售订单基本流程 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-新增],保存,审核。 注:①销售订单的单价应提前维护,自动带出,不可手工修改单价。 ②销售订单上应录入完整的合同相关信息,比如:交货日期、销售方式 等。 1.3 关联销售订单下推生成发货通知单 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-维护],在销售订单时序薄界面,点‘下推’按钮,下推生成发货通知,保存,审核。 1.4 关联发货通知单下推 仓管用户进入系统主界面,点击[供应链]-[销售管理]-[发货通知]-[发货通知-维护],在销售发货序时簿,点‘下推’按钮,下推生成销售出库,保存,审核(出货后)。 注意:①销售出库单的源单类型是:发货通知单 ②销售出库单应列明:SN号 1.5 关联销售出库单下推生成销售发票 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售出库]-[销货出库-维护],在销售出库序时簿中,点‘下推’按钮,下推[生成销售发票],保存,审核,钩稽。 注意:①销售发票的源单类型是:销售出库 ②往来科目设置:应收帐款 ③发票号码是:实际开出的发票号码,不是系统自动带出的。 1.6 销售发票钩稽 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售发票]-[销货发票-维护],在销售发票序时簿中,单击[钩稽],选择本次要钩稽的销

快消品基本业务流程

上海味多调味品业务流程 ?零售终端拜访流程 零售终端拜访和管理是一个业务主管日常的工作,也是最具有生产力的工作。 本资料将这些工作台细分成了各个动作,规范的执行这些动作,你在消费品销售这个领域的技能就一定能行到最大程度的提高。让我们一起来学习,共同进步吧! 准备工作 如果你以为销售工作是从零售终端开始那就大错特错了。战士上阵打仗前一定会检查自己的武器弹药,业务主管也是一样的,出发前就要做好各项准备的工作。 固定路线,按照固定的路线拜访客户。 这项工作通常要使用的工具是《跑店路线安排》和《地略图》。《跑店路线安排》是用来填写一周的固定拜访路线的,《地略图》则是显示各个零售终端在地理上的位置。按照固定路线拜访客户的好处在于,能让客户在固定时间看到业务主管成为一种习惯,这种习惯对于零售终端安全库存的准备也是大有好处的。 合理安排,考虑到地理位置和商店负责人的时间。 动作1中地地略图就是为了合理地安排跑店路线。除此之外,商店负责人的工作时间也是我们需要考虑的。如果我们有新品需要分销、陈列需要改进,这些都需要在商店负责人的工作时间内和他们进行协商。了解他们的工作时间也是在设计拜访路线时的一项重要工作。 电话预约,利用电话提高拜访效率,避免负责人不在。 简单的理货和陈列工作不一定需要负责人在场,但如果是要和商店做一个促销活动的谈判,那你就必须确保负责人在场,光了解负责人的工作时间还不够(因为可能出现调休、病假等等意外情况),你还需要事先电话预约一下,这个动作一是确认时间,二是表示对对方的尊重。 设定拜访目标 有目的地跑店是一个业务主管良好工作习惯的表现。我们不是在“逛”商店,而是在商店里工作。所以,拜访前你要带好上次的拜访记录和陈列进度表,并且明确这次的拜访目标。你的目标是要分销新的SKU?还是增加陈列面?这些都是必须在拜访前明确的。目标设定还需要明确最高目标和最低目标。谈判是一个计价还价的过程,你所得到的东西总是会低于你所提出的要求。但是如果你不懂得设定目标,你就无法去评估你究竟是做了一个成功的谈判还是失败的谈判。在明确了拜访路线和拜访目标之后,接下来要做的事就是准备好你的销售工具。 目标准备,根据目标准备适当的工具和数据 根据拜访目标,你要带好随身携带的工具和数据。如果是一个新的促销活动,你就要检查是否带足了这个促销活动所需的POP、陈列道具。促销品有不有忘记?如果是分销新的产品,你有没有带上样品、新产品的介绍或者是宣传单面? 如果你的目标是需要扩大陈列面,你就要带上你的销售数据。通常强势品牌扩大陈列面——对于固定货架来讲,其实就是挤压竞争对手的空间——手法是通过计算自己品牌陈列面的增长为商店所带来的利润。而通常弱势品牌的做法恰恰是反

供应链基本流程图

供应链操作基本流程 销售管理基本流程 1.1 销售报价基本流程 1.2 手工录入销售订单基本流程 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-新增],保存,审核。 注:① 销售订单的单价应提前维护,自动带出,不可手工修改单价。 ②销售订单上应录入完整的合同相关信息,比如:交货日期、销售方式 等。 1.3 关联销售订单下推生成发货通知单 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-维护],在销售订单时序薄界面,点‘下推'按钮,下推生成发货通知,保存,审核。 1.4 关联发货通知单下推 仓管用户进入系统主界面,点击[供应链]-[销售管理]-[发货通知]-[发货通知-维护],在销售发货序时簿,点‘下推'按钮,下推生成销售出库,保存,审核(出货后)。 注意:① 销售出库单的源单类型是:发货通知单 1.5 关联销售出库单下推生成销售发票 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售出库]-[销货出库-维护],在销售出库序时簿中,点‘下推'按钮,下推[生成销售发票],保存,审核,钩稽。 注意:① 销售发票的源单类型是:销售出库 ② 往来科目设置:应收帐款 ③发票是:实际开出的发票,不是系统自动带出的。 1.6 销售发票钩稽 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售发票]-[销货发票-维护],在销售发票序时簿中,单击[钩稽],选择本次要钩稽的

销 售发票、费用发票和对应的销售出库单,输入[本次钩稽数量],再单击[钩稽]。 1.7 销售退货 仓库用户进入系统主界面,点击[供应链]-[销售管理]-[销售出库]-[销货出库-新增],选择红字,保存,审核。 1.8 销售红字发票财务用户进入系统主界面,点击[供应链]-[销售管理] -[销售发票]- [销货发票-新增],选择红字填制,保存,审核,钩稽 1.9 销售赠品类 ① 赠送商品需要核算成本的,应通过“其他出库单”处理; ② 不需要核算成本的,可以通过“虚仓出库单”处理。用户进入系统主界 面,点击[供应链]-[仓存管理]-[虚仓管理]-[虚仓出库],填制完成后保存、审核。 二、MRP 计划基本操作(暂定) 2.1 手工录入采购申请单MRP用户进入系统主界面,点击[供应链]-[采购 管理]-[采购申请]-[采购申请单-增加],保存、审核。 采购申请单由计划部门依据生产计划、物料需求计划、库存情况等,向采购部门提请购货申请。 注意:① 采购申请单由芳制单,玉超审核。 ② 采购申请单业务类型选择为外购入库;委外加工的采购申请单业务类 型选择为订单委外。 三、采购管理操作基本流程: 3.1 关联采购申请单下推生成采购订单采购用户进入系统主界面,点击[供应 链]-[采购管理]-[采购申请]-[采购申请单-修改]。 在采购申请单序时簿中,查询到手工生成的所有采购申请单。选中需要下推 的单据,点[下推]-[生成采购订单],保存,审核。 注意:① 采购订单由采购员制单,总审核。

公司业务流程

公司业务流程(修改) ㈠基本流程图示: 采购基本流程图: 销售基本流程图: 生产与存货基本流程图: ①计划和安排生产②发出原材料③生产产品④核 算产品成本⑤储存产成品⑥发出产成品

生产与存货、销售流程图示:计划生产部门 根据客户订单或销售预测和产品需求 分析决定授权生产。即:签发预先顺 序编号的生产通知单(或生产计划单),还需要编制材料需求报告(请购单),列示所需要的材料和零件及库存。 生产通知单一式三联,一式留存,二 联生产车间,三联公司行政办(以用 于人员考核、编制工资单、部门协调、后勤统一调度等) 生产车间 在收到生产通知单及领取原材料后,将 生产任务分解到每一个生产班组和工人, 生产车间 向车间发出生产通知单生产部门根据生产通知 单的内容确定所需要的 原料和配件及设备调试, 并提前做好设备的检修, 向仓库领料并填写一式 三联领料单。 仓储部 根据从生产部门收到的领料单发出原材料。 一般做法是:生产部门向仓库领料或仓库 并将所领取的原材料交给生产工人,以执行生产任务。生产工人在完成生产任务后,将完成的产品交生产部门查点,转交检验员验收并办理入库手续;或是将所完成的半成品移交下一个部门,作进一步加工。向车间发出 原材料 发料时,由库管员填写一式三联领料单, 领料单需要生产部门负责人(车间主任或 班组长)和库管员共同签字,仓库发料后, 一联连同材料交给领料部门;一联留存在 仓库,登记材料收发存明细账;一联交会 计部门进行材料收发核算和成本核算。 成品库产成品完工入库发运部门(或物流部)、销售部为一体(新材料) 产成品入库,须由仓库部门先行点验和检 查,然后签收,进行储存管理。成品库库 管员填写入库单,入库单一般为一式三联, 应由库管员、检验员、生产完工负债人共 同签字。一联仓库留存,用来登记库存商 品明细账,一联交生产部门或检验部门,一联交会计部门进行材料收发和成本核算。库管员须根据产成品的品质特征分类存放,并填制标签,按存货保管相关制度进行管理。产成品或库存商品的发出应严格遵守先进先出法。发出产成品由 发运部门负责 产成品的发出须由独立的发运部门进 行。发运部(或物流部)必须根据销 售部门开具的销售单或经有关部门核 准的发运通知单装运产成品,根据公司 情况发运、物流、销售为一体。一般 是销售部门开具一式五联的销售单, 一联留存;一联财务部门审核;一联 仓库作为开出库单的依据;一联客户; 一联交门卫,以便内部审核。出库单 开具时,发运负责人签字后,送仓库 货物出厂门卫核查数量并留 下一联出库单后放 行。(门卫制度) 产品出库部门,仓库部门在点货装运后在单上 签字并留置一联。(此处依据通用流程, 针对公司操作部分见流程操作说明)

企业供应链详细管理流程图

对沃尔玛公司组织结构的调查与分析

公司简介 沃尔玛公司(Wal-Mart Stores, Inc.)(NYSE:WMT)由美国零售业的传奇人物山姆·沃尔顿先生于1962年在阿肯色州成立,是一家美国的世界性连锁企业,以营业额计算为全球最大的公司,其控股人为沃尔顿家族。总部位于美国阿肯色州的本顿维尔。沃尔玛主要涉足零售业,是世界上雇员最多的企业,连续三年在美国《财富》杂志全球500强企业中居首。 沃尔玛公司有8500家门店,分布于全球15个国家。沃尔玛在美国50个州和波多黎各运营。 沃尔玛主要有沃尔玛购物广场、山姆会员店、沃尔玛商店、沃尔玛社区店等四种 组织结构图描述 (1)沃尔玛总部组织结构图

沃尔玛公司总部实行组织扁平化 传统的零售企业组织结构为“金字塔型”层级结构。在这种结构中,上下级层级分明,每个人都有明确的权利和责任,中间为一个庞大的管理层。该结构在稳定的环境下,是一种比较高效的组织结构,适合企业的发展。但当前,企业面临的环境变化迅速,特别是在零售业,市场环境变化迅速,消费者需求日益多样化和个性化。金字塔型的组织结构己明显不利于零售企业的发展。同时,信息技术在零售业的广泛应用使扁平化结构和管理成为可能。世界零售巨头沃尔玛不断减少企业的管理层次,向下分权。 在沃尔玛的组织结构里,上层的CEO下面设立四个事业部,分别管理着购物广场(含折扣店)、山姆会员店、国际业务和物流业务,下面就是庞大的分店;另设两个商店管理事业部,通过事业部总裁、区域总裁、区域经理、店铺经理四个层次,直接对店铺的选址、开办、进货、库存、销售、财务、促销、培训、广告、公关等各项事务进行管理。 沃尔玛公司总部实行管理分权化 管理分权化已成为国外零售企业组织管理的共识。也是由消费者需求的多样性及技术在零售业的应用所推动的。分权化是指上层管理者把一些管理权和决策权与下级共享。这样做的好处是显而易见的,可以在较大程度上,鼓励下级并使其努力工作,从而更好满足消费者的需求,提高工作效率。 店铺销售的所有商品,除了部分生鲜食品考虑到保鲜的要求,由店铺在附近自行采购外,全部要由事业部的采购部门统一采购,物流部门统一配送。这种连锁经营的模式,使得沃尔玛公司具有强大的市场竞争能力。

销售业务的基本流程

销售业务的基本流程 (一)接听电话 在房产营销过程中,顾客第一次与售楼人员的联系往往是通过电话进行的,售楼人员的电话接听不仅反映了其个人的素质和修养,更是体现了该房地产开 发商或代理商的形象。 A、基本要求 1、接听电话必须态度和蔼、语音亲切,一般主动问候“**花园或公寓、你好”,而后开始交谈。 2、通常客户在交谈中会问及价格、地点、面积、布局、进度、贷款等方面,销售人员应扬长避短,在回答中将产品的卖点巧妙溶入。 3、在与客户交谈中设法取得我们想要的资讯。如客户的个人资讯(姓名、地址、联系电话等)、客户对产品的具体要求的资讯(价格、面积、房型等) 4、最好能直接约请客户来现场看房。 5、马上将所有资讯记录在客户来访表上。 B、注意事项 1、作好应答准备。销售人员在正式上岗前必须相当熟悉楼盘各种情况,根据统一答客问、销讲、统一说辞使电话应答中和以后现场接待时口径统一。顾客往往是看广告后来电询问的,因此,事先必领了解广告的诉求内容,认真仔细考虑客来电可能提出的问题,以便在应答时胸有成付。 2、售楼人员电话接听并不可能立即成交一笔业务,因此答话内容简明扼要,关键是能吸引顾客到售搂处现来参观洽谈,约请客户应明确具体时间、地点并告诉客户你将专程等侯,通话时间也不宜过长,一般在2—3分钟。 3、电话接听应避免消极被动或过于主动两种倾向。消极被动就是有问有答、惜话如金。这样会冲淡客户兴趣;过于主动就是急不可待的向客户自

吹自擂搂盘的长处,甚至急于求成,追问客户个人资讯,这样往往会将客户吓退。电话接听时应签应注意火候、尽量由被动问答转为主动介绍、主动询问。 4、应将客户来电来信及时整理归档,与现场专案、涉及人员充分沟通交流。 (二)现场接待准备 l、售楼员形象准备 1)眼神:凝视或适当地避闪,附合点头或“喂”“不错”等应承语言。传神的 眼神间传达出信任、聆听、明白和真实。 2)手势;坚定地指向,准确地指示。兰花指或染指甲都被视作是花俏与不严肃。 客户迎来送往握手是常见的见面礼仪。 4)开场白:意思明确,三思而后行是开场白的关键;说的多,问的多,了解 就多,机会就越多。 开场白有八个注意点: 一、给客户一个好印象。 二、不用急于求成,应诱导。 三、了解行情,成为专家。 四、你给客户的印象将在最短的时内(14秒)产生。 五、任何一句语都是一个开场白。 六、销售员是导购员,不能指挥客户。 七、善待客户的意见。 八、不要贬损别人或别的楼盘。 5)自我介绍: 一、介绍公司:用最简练的字句;

易飞ERP系统基本业务流程

一、企业简介 A 企业“光华家具公司”,经营的是家具类产品,作为一般纳税人,需要缴纳税率为17%的增值税,税号是:TAX011; 这个企业经营五种家具类产品沙发,大班椅,组合柜,躺椅,藤椅,办公椅。分别由 五个事业部运作,其中办公椅为自主生产。 五个事业部都有各自的信息技术人员,销售,采购,仓管,财务人员,而财务人员又 分应付,应收负责人经营的五种产品各自放在各自的库中,不能混放。 五个事业部有不同的市场,客户完全不同。 五个事业部的采购渠道完全不同。 二、企业业务流程简介 家具市场上近日非常流行一款办公椅,受到广大消费者的喜爱。 1 市场:2003/12/05 销售员蔡春接到客户“中实集团”的一个订货电话,购买新款办公椅100 张,要求2003/12/26 交货。 2 订单:当日签订了销售合同,合同内容约定每张办公椅含税单价为600 元,交货时随货附发票,交货后一天内付款,并以银行转账支票结算。 3 需求计划:生管人员焦永涛根据这张订单去做批次需求计划,生成生产计划:生产办公椅100 张,2003/12/12 开工;由于生产办公椅需要的原材料底座的现有库存量不能 满足生产的需求,所以生成这类原材料的采购计划,预计进货日2003/12/11。 4 发放计划:生管人员审查生产计划与采购计划,确认无误,将生产计划发放成工单到办公椅加工中心;将采购计划发放成采购单。 5 原材料采购与应付:采购员李文依据采购单与供应商嘉禾加工厂签订采购合同,合同内容为:50 个底座于2003/12/11 到货,每个底座的含税单价为100 元,随货附发票, 并以银行转账支票结算。 6 原材料入库与付款:2003/12/11 库管员刘争收到‘嘉禾加工厂’运来的底座50 个,刘争核对采购合同将50 个底座验收入库到原材料仓,并将验收单转交给财务应付人员李

供应链管理系统构成及操作流程

供应链(购销存)管理系统构成及操作流程(带流程图) 供应链(购销存)是用友ERP-U852管理软件的重要组成部分,它突破了会计核算软件单一财务管理的局限,实现了从财务管理到企业财务业务一体化的全面管理,实现了物流、资金流管理的统一。本章主要讲授购、销、存业务处理的功能与特点,购、销、存业务处理系统的基本操作流程与方法等内容。 供应链(购销存)业务处理系统概述 供应链管理系统包括采购管理、销售管理、库存管理和存货核算等模块。其中每个模块即可以单独使用,也可以与相关子系统联合使用。 供应链(购销存)业务处理系统的功能与特点 1.供应链(购销存)业务处理系统的功能 供应链(购销存)业务核算是企业经营管理的重要环节,繁杂的购、销、存业务核算与管理工作一直困扰着企业,供应链(购销存)业务处理系统正是根据企业供应链(购销存)业务 的特点设计开发的核算与管理软件,一般来讲,供应链(购销存)业务处理系统应具备以下功能: (1) 物资采购业务的核算:根据企业业务经营与财务管理方面的要求,处理有关物资采购方面的经济业务,主要包括请购、定购、到货、入库、采购发票、采购结算等全过的管理, 可以处理普通采购业务、受托代销业务等业务类型。企业可根据实际业务情况,对采购业务处理流程进行可选配置。并登记各种核算账簿以及进行采购业务分析。 (2) 产品销售核算:按照国家有关规定, 处理有关产品销售方面的经济业务,包括销售报价处理、销售定货、销售开票、销售调拨、销售退货、发货折扣、委托代销、零售业务等,并根据审核后的发票或发货单自动生成销售出库单,处理随同货物销售所发生的各种代垫费用,以及在货物销售过程中发生的各种销售支出。对产品的销售业务进行核算统计,同时,进行各种销售业务分析。 (3) 库存商品的管理和核算: 按照国家有关规定, 处理有关库存商品管理方面的经济业务。主要包括审核各种入库单据、管理出入库数量、同时处理库存商品调拨业务、盘点业务、组装拆卸业务等,另外对于库存商品的控制(保质期管理、代销商品管理、不合格品管理、现存量管理、安全库存管理等),同时进行入库流水账、库存台账等库存账簿管理和统计分析、存货出入库成本的核算、出入库成本的调整、存货跌价准备的处理等。 2. 供应链(购销存)业务处理系统的特点 根据企业对材料物资和库存商品的、进、销、存核算与管理的要求,供应链核算系统应具备以下特点: (1) 核算数据量大。 (2) 税金计算政策性强。 (3) 数据间的计算关系复杂。 (4) 成本计算方法多。 (5) 数据传递关系多等。 3. 供应链(购销存)核算业务实现电算化的意义 供应链(购销存)核算是企业管理中非常重要的部分,由于业务量非常繁多,且手工处理易出现差错,因此,实现供应链(购销存)核算电算化,使广大财务工作者从繁杂的手工处理中解脱出来,准确,高效地进行管理具有十分重要的意义。 供应链(购销存)核算的业务流程和数据流程 1. 企业供应链(购销存)核算模式 一般来说,其供应链(购销存)手工核算流程如下:

ZYcs基本业务流程.doc

1位置更新流程 位置更新是MS通知网络用户当前位置信息的过程,有三种类型:正常位置更新、周期性位置更新和IMSI附着。正常位置更新指的是用户所在位置区LA发生变化,周期性位置更新是MS根据RNC/BSC的广播信息在空闲状态定期更新网络保存的用户位置信息,IMSI 附着一般是用户开机或插入SIM卡。位置更新都是由MS发起的,流程相同,只是在LocationUpdatingReq消息中的“位置更新类型”参数值不同。 1.1在同一模块的位置更新 流程说明: a)移动用户由于位置区改变、开机、插入SIM卡以及周期性更新等原因决定向网络发 起位置更新过程。MS侧的MM实体要求RR实体建立RR连接。RR连接建立后,RNC 将内容为LUReq的L3消息组装成SCCP-CR消息发送到UMSC-RANAP实体。RANAP在 SCCP连接建立后,由分发原则根据用户标识(IMSI/TMSI)选择业务处理模块,发 送内容为LUReq的mrInitUE消息通知选定业务处理机的MSC-MM实体。MM实体对 LUReq进行解码、参数检查、负荷控制检查,判断是否接收位置更新。若允许位置 更新,则形成内部消息发送给VLRMAP;否则拒绝业务。 b)用户使用TMSI进行位置更新时,若VLRMAP不认识此TMSI且不能从PVLR得到IMSI,

则要求用户提供IMSI,向MM发送mcvPvdIMSIReq消息。请求IMSI过程见“请求 用户标识”过程描述。MM获取IMSI后返回给VLRMAP,VLRMAP检查IMSI属于本模 块处理范围,继续进行位置更新处理流程,否则进行业务迁移(具体流程参见图 12)。 c)根据OMC配置需要对此位置更新过程进行鉴权,VLRMAP发送mcvAuthReq消息给MS。 鉴权过程见“鉴权过程”描述。 d)VLR中不存在用户数据时需要位置更新HLR。在用户位置更新之前,HLR中的用户 补充业务数据可能被修改,或者HLR可能重新启动过,那么HLR将发送 ForwardCheckSSReq消息通知VLR。VLRMAP转发此消息给MM。MM使用一新的呼叫 无关补充业务Register消息(包含在mrDirectTrans中)传送给MS,通知MS检 查相关的补充业务信息。 e)根据OMC配置需要为用户重新分配TMSI,则VLRMAP启动安全管理过程,发送 mcvSecModeCmd消息到MM,消息中指明是否加密,采用的加密算法和完整性算法。 安全管理过程是RNC与MS之间的过程,所以MM形成相应RANAP消息发送给RNC。 RNC完成后通知MM。需要注意的是,在UMTS系统中安全管理过程包含了完整性保 护的作用。而在每次新信令连接建立中必须启动完整性过程来保护所传信令的完整 性,所以“安全模式设置”过程为必须过程,除了以下四种情况:1)信令连接只 是为了进行周期性位置更新;2)在初始L3消息后,没有其他信令传递;3)初始 L3消息后,只有鉴权、IDReq以及信令拒绝消息;4)建立紧急呼叫。另外,一般 来说,加密过程之前必须启动鉴权过程,因为加密的密钥是通过AuthReq消息带到 MS的。为了在不鉴权时进行加密,GSM/UMTS系统采用了CKSN/KSI方法。MS在接 入网络时将存储的CKSN/KSI带上来,若和VLR中的CKSN/KSI一致,则可以直接启 动加密过程。 f)位置更新接受,VLR重新分配TMSI,VLRMAP形成mcvFwdNewTmsiReq消息通知MM 重新分配TMSI(没有TMSI重新分配过程时,VLRMAP发送mvLUCnf消息通知MM位 置更新过程正常结束)。MM将新TMSI包含在LUAcc消息中送给MS,MS存储新TMSI 和LAI,删除旧TMSI,返回TmsiReallocComplete消息。MM接收消息给VLR发送 mcvFwdNewTmsiRsp,位置更新完成。若MS在位置更新请求中携带有follow-on参 数,表示位置更新有后续业务需要处理,则MM在LUAccept消息中带回follow-on 参数,等待后续业务。在MM接收TmsiReallocComplete消息后,若支持follow-on, 则不释放Iu连接,设置定时器等待后续业务。否则,MM发送mrIuRel消息释放Iu 连接。若MM在LUAccept消息中只包含IMSI,表示不使用TMSI,MS删除原来TMSI; 若在LUAccept消息中不带有任何用户标识,则MS使用原来的标识。若当前存在多 个PLMN网络,且运营者允许用户接入其他网络,则在LUAcc消息中用"equivalent PLMNs"参数包含这些允许接入网络标识给MS,MS保存信息到SIM卡中。在 "equivalent PLMNs"参数为空时,MS删除SIM卡已有信息。 1.2存在业务迁移时的位置更新 MSC/VLR系统采用多模块的业务处理机,从RNC/BSC接收的L3消息需要根据一定的规则分发到某一个或多个业务处理机。RNC/BSC来的和某用户相关的L3消息都是在一个SCCP连接上传送的,消息的分发只需要在接收第一条SCCP面向连接消息时进行,后续消息发往同一业务处理机。由于MSC/VLR分片处理是按照用户标识的末两位来划分的,所以RANAP根据用

供应链基本流程(终审稿)

供应链基本流程 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

供应链操作基本流程 一、销售管理基本流程 1.1 销售报价基本流程 1.2 手工录入销售订单基本流程 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-新增],保存,审核。 注:①销售订单的单价应提前维护,自动带出,不可手工修改单价。 ②销售订单上应录入完整的合同相关信息,比如:交货日期、 销售方式等。 1.3 关联销售订单下推生成发货通知单 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-维护],在销售订单时序薄界面,点‘下推’按钮,下推生成发货通知,保存,审核。 1.4 关联发货通知单下推 仓管用户进入系统主界面,点击[供应链]-[销售管理]-[发货通知]-[发货通知-维护],在销售发货序时簿,点‘下推’按钮,下推生成销售出库,保存,审核(出货后)。 注意:①销售出库单的源单类型是:发货通知单 ②销售出库单应列明:SN号 1.5 关联销售出库单下推生成销售发票 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售出库]-[销货出库-维护],在销售出库序时簿中,点‘下推’按钮,下推[生成销售发票],保存,审核,钩稽。 注意:①销售发票的源单类型是:销售出库 ②往来科目设置:应收帐款 ③发票号码是:实际开出的发票号码,不是系统自动带出 的。 1.6 销售发票钩稽 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售发票]-[销货发票-维护],在销售发票序时簿中,单击[钩稽],选

咨询业务运作的基本流程

咨询业务运作的基本流程 一、项目介入阶段 1、初步接触: 1)应派出具有丰富知识和经验的高级咨询顾问或主要负责人与客户负责人接洽;2)尽可能让客户多说急需解决的问题; 3)他对该问题的个人看法以及要求; 4)经初步洽谈,确定合作意愿,要求客户提供“企业管理咨询委托登记表”和企业基本情况调查提纲; 5)商谈预备调查的准备工作和时间。 2、进一步洽谈确定课题 1)由于客户对问题的感觉和描述误差,要求咨询管理公司必须对客户企业管理现状进行独立的问题调查,以求得到完全、公正,并找出关键问题所在。 2)主要内容: A、深入和全面的了解,对客户企业进行实地考察; B、分析、研究所提出的问题与企业目标之间的关系; C、了解客户企业进行革新和有效解决问题的潜力; D、共同确认项目范围。 注意:预备调查的目的并不是提出解决问题的措施,而是确定和规划咨询任务或项目,为最终解决问题铺平道路。 3、提交项目建议书: 撰写有说服力的建议书是咨询成败的关键。 4、签订正式咨询合同 1)咨询建议书作为合同副本同时有效; 2)客户单位根据合同付款方式应先预付一部分咨询启动费用。

二、项目启动阶段: 是从管理咨询公司和客户正式签订合同并且收到第一笔客户款项算起。 1、确定项目工作组: 1)至少在正式合同签订前一周,项目组组建已开始。 A、根据项目要求确定由双方主要领导组成的项目组,直接监督管理项目的开展。 B、确定双方项目主要负责人。 C、确定需要外聘的专家、高级顾客和内部顾问人选。 2)合同一般会规定在若干天内项目组进驻客户公司。即进场。 2、确定项目计划 1)由项目组和项目负责人确定项目开展计划与项目详细目标,结构细化,时间进度, 人员要求和其他后勤准备。 2)根据经验提出初步计划建议。 3)准备项目开展所需的资料、表格等。 3、确定联合工作组:是事半功倍的关键! 1)根据项目计划要求成立由双方相关人员组成的联合项目工作组,明确具体分工和职责。 2)拟定工作计划和时间进度。 3)拟定调查分析计划。 4)针对项目需要对联合工作组成员进行培训。 三、调查分析阶段 1、调查分析座谈会 1)企业各部门介绍其职能情况,工作中存在的问题和改进的要求; 2)根据需要并征得客户同意进行问卷调查和重点访谈; 3)主持和开展座谈会、讨论会、听到各方面人员的意见和要求; 4)深入调查分析,了解客户竞争对手的情况及客户产业链。

供应链基本流程资料

供应链基本流程

供应链操作基本流程 一、销售管理基本流程 1.1 销售报价基本流程 1.2 手工录入销售订单基本流程 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-新增],保存,审核。 注:①销售订单的单价应提前维护,自动带出,不可手工修改单价。 ②销售订单上应录入完整的合同相关信息,比如:交货日期、销售方 式等。 1.3 关联销售订单下推生成发货通知单 销售用户进入系统主界面,点击[供应链]-[销售管理]-[销售订单]-[销售订单-维护],在销售订单时序薄界面,点‘下推’按钮,下推生成发货通知,保存,审核。 1.4 关联发货通知单下推 仓管用户进入系统主界面,点击[供应链]-[销售管理]-[发货通知]-[发货通知-维护],在销售发货序时簿,点‘下推’按钮,下推生成销售出库,保存,审核(出货后)。 注意:①销售出库单的源单类型是:发货通知单 ②销售出库单应列明:SN号 1.5 关联销售出库单下推生成销售发票 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售出库]-[销货出库-维护],在销售出库序时簿中,点‘下推’按钮,下推[生成销售发票],保存,审核,钩稽。 注意:①销售发票的源单类型是:销售出库 ②往来科目设置:应收帐款 ③发票号码是:实际开出的发票号码,不是系统自动带出的。 1.6 销售发票钩稽 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售发票]-[销货发票-维护],在销售发票序时簿中,单击[钩稽],选择本次要钩稽的销

售发票、费用发票和对应的销售出库单,输入[本次钩稽数量],再单击[钩稽]。 1.7 销售退货 仓库用户进入系统主界面,点击[供应链]-[销售管理]-[销售出库]-[销货出库-新增],选择红字,保存,审核。 1.8 销售红字发票 财务用户进入系统主界面,点击[供应链]-[销售管理]-[销售发票]-[销货发票-新增],选择红字填制,保存,审核,钩稽 1.9 销售赠品类 ①赠送商品需要核算成本的,应通过“其他出库单”处理; ②不需要核算成本的,可以通过“虚仓出库单”处理。 用户进入系统主界面,点击[供应链]-[仓存管理]-[虚仓管理]-[虚仓出库],填制完成后保存、审核。 二、MRP计划基本操作(暂定) 2.1 手工录入采购申请单 MRP用户进入系统主界面,点击[供应链]-[采购管理]-[采购申请]-[采购申请单-增加],保存、审核。 采购申请单由计划部门依据生产计划、物料需求计划、库存情况等,向采购部门提请购货申请。 注意:①采购申请单由杨芳制单,刘玉超审核。 ②采购申请单业务类型选择为外购入库;委外加工的采购申请单业务 类型选择为订单委外。 三、采购管理操作基本流程: 3.1关联采购申请单下推生成采购订单 采购用户进入系统主界面,点击[供应链]-[采购管理]-[采购申请]-[采购申请单-修改]。 在采购申请单序时簿中,查询到手工生成的所有采购申请单。选中需要下推的单据,点[下推]-[生成采购订单],保存,审核。 注意:①采购订单由采购员制单,张总审核。

相关主题
文本预览
相关文档 最新文档