财务软件间的财务接口(转载)-CarlZeng

需要同步的数据应该分几大类。如:1。会计科目代号数据; 这个是基础的,科目必须对应。2。月份结存数据; 中国的财务都有一个会计期间,期初、期末的查询和同步。与国外有一个不同地方。国外的软件主要关心balance,需要国内的这个数据。如果没有可以考虑多张报表的合并,或者是单独的表来存储。3。凭证数据, 凭证的数据必须在两个系统之间可以同步。4。—————————-…

需要同步的数据应该分几大类。如:

1。会计科目代号数据; 这个是基础的,科目必须对应。

2。月份结存数据; 中国的财务都有一个会计期间,期初、期末的查询和同步。

与国外有一个不同地方。国外的软件主要关心balance,需要国内的这个数据。如果没有可以考虑多张报表的合并,或者是单独的表来存储。

3。凭证数据, 凭证的数据必须在两个系统之间可以同步。

4。

————————————-

一个国外ERP本身已经具备完善而严谨的财务模块,为什么还要与国内财务软件作接口或数据传递呢?这也是我首先要阐明的一个问题,国外ERP的成本管理蕴含着西方管理会计的内容,而财务模块也使很多中国的财务人员不适应,举一个简单的功能来说,国内财务软件都又”反过帐”、”预过帐”等功能,而这些在国外ERP的财务模块中都是不存在,但其优秀的物流和成本管理等是目前国内ERP软件所缺乏的。

但是在此我们就不讨论二者的优劣或管理水平思想观念之类的话了,下面我就二者集成的几种方案谈谈我的看法并就一个已经实现的实例做简单剖析。

一、集成方案分析

物流与资金流本是密不可分的,在企业的生产、经营过程中的任何活动都有相应的成本费用或收益生成,同时产生相应的各种单据为凭据。ERP物料系统在生产经营的各个环节都能够提供原始凭证明细,如果能够经过分类汇总,以某种便利的方式提供给财务软件,以方便其进行帐务处理也就达到了基本集成的目的。下面就可能的接口方式:

方案一:传递凭单 1.系统总体应用模式(图) 物流系统使用ERP,财务由单独的专用财务软件

财务处理使用普通财务软件。

这样的做法基本上避免了两个软件各自的”缺点”,使它们各自的优点得到了充分的应用,因为ERP系统截去财务部分,仍不失为一个完美的物流和成本管理系统,而普通财务软件本来就是手工做帐,传递凭单对其现有的功能没有任何影响。

接口功能简述:

日常订单管理、采购管理、存货管理、生产管理、成本核算等使用ERP系统进行处理,而往来帐、总帐、报表等可以用普通财务软件进行处理,但有一点是计划人员和财务人员之间必须加强配合,使用计算机自动传递凭单和数据。

数据接口简述:

存货:依据普通财务系统的需求,ERP系统每月输出相关报表,然后,根据这些报表在普通财务系统做出相应手工凭证;

生产成本:ERP系统中车间日记帐时实的传递给普通财务系统;

应付帐款:供应商到票后,在ERP系统中处理暂估,同时生成凭单,把生成凭单时实的传递给普通财务系统,然后在普通财务系统进行审核和追加必要的参考信息,同时ERP系统随时可以输出供应商暂估明细和汇总数;

应收帐款:订单发货后,对客户开票或生成借项、贷项通知单,把生成的发票及借项、贷项通知单时实的传递给普通财务系统,然后在普通财务系统进行审核和追加必要的参考信息,同时ERP系统随时可以输出客户未开票报告;

数据一致性:

(1).ERP系统添加供应商、客户的同时,把供应商、客户信息时实的复制到普通财务系统中;
  (2). ERP系统在向普通财务系统传递凭单时,检索对应的供应商或客户的信息,若无此供应商或客户,复制该供应商或客户到普通系统中;

(3). 普通财务系统中添加其他类型的供应商、客户时,把供应商、客户信息时实的复制到ERP系统中;
  (4). 普通系统中添加会计科目时,同时复制到ERP系统会计科目表中。

2.接口目标

ERP处理:存货、生产成本、暂估等

普通财务系统处理:总帐、往来帐等,存货和生产成本在此只有汇总数据

4.优点与缺点

优点:

◆ 物流与资金流 运行同步、数量一致、帐务细化
  ◆ 财务人员基本不进行ERP应用操作
  ◆ 帐务处理方式不变;
  ◆ 节省部分输入凭证的时间
  ◆ 对计划人员有了监督功能
  ◆ 技术实现简单可行

缺点:

◆ 维护基础数据一致较为困难

方案二:传递凭证 1.系统总体应用模式(图)

这种方案是:物流系统和财务系统的应收应付都使用ERP系统,总帐管理、借款管理、财务结转和财务报表等使用普通财务软件。

这样的做法上保持了ERP物流系统的完整性,基本上保持了财务部分的主要功能,物流和资金流严格同步和统一,报表和总帐则使用普通财务软件。

每月月末,把ERP的所有相关日记帐自动传递给普通财务软件,这样ERP系统和普通财务软件都有完整的应收应付明细帐,但每月应收应付的初始凭证的生成或调整必须在ERP系统中进行,也就是说在进行总帐处理之前,应收应付凭证以ERP系统为准,如果要查某个供应商或客户的往来明细,两个系统都可进行查找,比较方便;另外, ERP系统中总帐将不完整,而普通财务软件存有完整的财务数据,日常事务(应收应付之外)管理主要使用普通财务软件。同上方案一样,计划人员和财务人员之间必须加强配合,使用 计算机自动传递凭单和数据。

数据接口简述

  存货、生产成本:采购日记帐、库存日记帐、车间日记帐、订单日记帐每月进行一次压缩后,传递给普通财务系统;

应付帐款:所有的应付、付款、预付业务在ERP系统中进行操作,月末将供应商应付、付款明细传递给普通财务系统; ERP系统有完整的应付明细帐,总帐不完整,而普通财务系统中也有完整的应付明细帐和总帐;

应收帐款:所有的应收、收款、预收业务在ERP系统中进行操作,月末将客户应收、收款明细传递给普通财务系统; ERP系统有完整的应收明细帐,总帐不完整,而普通财务系统中也有完整的应收明细帐和总帐;

数据一致性:

(1).ERP系统添加供应商、客户的同时,把供应商、客户信息时实的复制到普通系统中;
  (2). ERP系统在向普通系统传递往来凭证时,检索对应的供应商或客户的信息,若无此供应商或客户,复制该供应商或客户到普通系统中;
  (3).普通系统中添加其他类型的供应商、客户时,把供应商、客户信息时实的复制到ERP系统中;
  (4). 普通系统中添加会计科目时,同时复制到ERP系统会计科目表中。

2.接口目标

ERP处理:存货、生产成本、暂估、往来帐等
  普通处理:所有财务数据

优点与缺点

优点:
  ◆ 物流与资金流 运行同步、数量一致、帐务细化
  ◆ 查账方便
  ◆ 普通系统中有完整准确的财务数据
  ◆ 对计划人员有了监督功能
  ◆ 结转、反接转方便

缺点:
  ◆ 财务人员进行ERP应用操作;
  ◆ 应收冲应付必须引用过渡科目
  ◆ 不能反过帐;
  ◆ 部分科目数据两分,只有月末传递数据以后才能直接查看发生数和余额
  ◆ 技术实现比较复杂。

方案三:同时使用(不做接口程序)

1.系统总体应用模式(图)

这种方案是:物流系统(包括成本管理)使用ERP系统,财务处理使用普通财务软件。这样的做法基本上避免了两个软件各自的”缺点”,使它们各自的优点得到了充分的应用,因为ERP系统截去财务部分,仍不失为一个完美的物流和成本管理系统,而普通财务软件系统不受任何影响,财务人员业务方式不变,工作模式不变。也就是说,日常订单管理、采购管理、存货管理、生产管理、成本核算等使用ERP系统进行处理,只是每月月底,计划人员和仓库人员可以依靠ERP系统给财务部门提供比以往更可靠和可信的做帐依据。

2.接口目标

ERP处理:存货、生产成本、暂估等

普通处理:除存货、生产成本、暂估以外的所有财务数据

3.数据接口简述

存货、生产成本等:依据普通财务系统的需求,ERP系统每月输出相关报表,然后,根据这些报表或汇总数据在普通财务系统做出相应手工凭证;

4.优点与缺点

优点:

◆ 财务人员不作ERP应用操作;
  ◆ 帐务处理方式未发生变化;
  ◆ 物流管理得到了优化
  ◆ 不用开发程序

缺点:

◆ 物流与资金流的不统一
  ◆ 财务部分数据不严格
  ◆ ERP部分帐务不能冲销
  ◆ 所有凭证都必须手工录入普通

问题综述:

不论那一种方案,我们都会面对一个共同的业务问题(只用ERP或只用普通也会存在同样的问题):原来,计划人员或仓库管理人员在完成某个业务以后,手工记录且手工传递做帐凭据到财务部门,他们之间的”接口”是松散的或不严格的,换句话说,原来这部分工作的管理是不细的或者说是粗放的,所以财务部门也就无法采取优质的算法精确计算物料成本精确核算成品成本。

要把”手工传递做帐凭据”转变为”计算机自动传递做帐凭据”不仅仅是程序或软件的问题,也有”业务方式转变”的问题,计划人员必须及时提供相对标准的数据让计算机传递给财务部门,便于财务部门做帐;而财务部门必须及时以合适的方式准确核对和修改计算机自动生成的凭证,两方必须协调一致的进行工作。所以要达到帐务的细化和管理水平上的提高,恰当进行部分业务方式的转变将是必须的。

如果这个问题处理不得当,再好的接口都将不能使用,这将是解决接口问题中必须注意的一个问题

=============================================二、集成实例剖析

我们公司使用方案一已经对实现了一种国外ERP与金蝶财务软件的接口,下图显示了ERP与普通财务集成业务示意图。左面的椭圆所包括的内容是ERP物流管理所涉及的范围,右面的椭圆所包括的内容是普通财务管理的涉及的范围,交叉部分是二者集成的数据接口部分,主要是各种报表、财务原始凭证。ERP系统实现销售管理、生产管理、BOM管理、存货管理及采购计划管理等,及时为财务部门提供生产经营过程中发生的各种单据、及原材料半成品、成品的成本明细。在ERP物流管理中可以看到有个小方框”MRP运算”,这是ERP系统的核心功能之一,它用来协调生产和采购、库房、销售等。普通系统实现应收帐、应付帐、成本管理、差旅费管理、总帐、固定资产管理、财务结算以及转账处理等,除部分明细报表外的所有财务报表全部由普通系统输出。其中应收、应付帐和成本管理要使用ERP 系统提供的数据。

在企业生产和经营过程中,涉及两个系统的单据和报表传递的主要活动如下:

在收到客户订单后,市场部把客户信息、合同号、合同金额、产品类型、数量、要求交货期等参数录入ERP系统;对已发货订单,月末打印当月”主营业务成本”报表和”主营业务收入”报表送财务部门。

采购到货,仓库人员进行采购接收,同时打印出”采购接收单”,整理后送”采购计划员”处;如有其它收发,月末把所有”其他收发料单”直接送财务部门,打印当月”收发存报表”送财务部门。

供应商发票到票,采购人员核对发票与采购接收单,然后把”采购接收单和发票” 一起送财务,财务人员在ERP系统对送来的发票和采购接收单进行审核,审核结束在普通生成应付凭证。月底,所有未到票清单形成”暂估明细报表”,送财务部门做暂估帐。

生产中,每道工序完成后都要报完工,系统把各种费用计入生产成本,月末需要整理和计算当月生产中所发生的”生产成本-直接材料”、”生产成本-直接人工”和”生产成本-制造费用”;月末仍没有报完工的所有在制品就形成”在制明细表”,需送财务部门进帐。

销售部门开”发货通知单”、”提货单”等,送货人员执”提货单”到仓库提货;仓库人员做订单发货,同时打印订单”发货单”,送财务部门,财务部门开销售发票,财务人员在ERP系统对订单进行审核,审核结束在普通生成应收凭证。

以上只是资金流动过程的一个实例,如果财务部门也参与操作ERP系统,更多报表可由财务部门打印和输出,就不需要其他部门提交了。在此过程中,单据和报表产生的情况和时间如下:

由上表可以看到,只有在与应收、应付有直接关系的”发货单”、”采购接收单和发票”需要随时输出,其他报表和数据一个月传递一次。原因是财务要及时根据发货单来开发票做应收帐,根据采购接收单和供应商发票来做应付帐。而收款、付款、预收、预付、差旅费管理、转账等都随时在普通中进行统一管理,与ERP没有直接的关系。

集成效果

a) 物流与资金流同步运行、数量一致、帐务细化
  b) 财务人员仅在ERP进行采购单、订单的审核操作,打印成本明细报表
  c) 帐务处理都在普通中进行
  d) 由财务人员审核生成的应收凭证、应付凭证不用手工输入
  e) 所有的记账凭证都可以从普通中打印机制凭证
  f) 财务人员可以对计划人员、仓库管理员、价格管理员实现有效的监督功能
  g) 技术实现简单可行,仅涉及系统的两个数据表
  h) 即使这两个表在系统升级时发生了改变,程序也只需作部分简单修改

  这样的做法基本使两个系统各自的优点得到了充分的应用,因为ERP系统截去财务部分,仍不失为一个完美的物流和成本管理系统,而普通财务软件则是处理中国财务的典范,传递数据对其现有的功能没有任何影响。

相关文章:

(源于银企直联:http://www.ecice06.com/qikan/manage/wenzhang/17-91.pdf

html版本:http://203.208.39.99/search?q=cache:wqaOpmhsOO8J:www.ecice06.com/qikan/manage/wenzhang/17-91.pdf+%E8%B4%A2%E5%8A%A1%E7%B3%BB%E7%BB%9F%E6%8E%A5%E5%8F%A3&hl=zh-CN&ct=clnk&cd=8&gl=cn&client=firefox-a&st_usg=ALhdy2-zUcRVbelNlWMacVWHQQ_VtaG5gg

税收基础知识 > 三税(营业税, 增值税, 所得税) + 关税-CarlZeng

三税:营业税 ▪ 增值税 ▪ 所得税主要关注:一般纳税人, 起征点不详细描述。营业税(Business tax) 营业税(Business tax),是对在中国境内提供应税劳务、转让无形资产或销售不动产的单位和个人,就其所取得的营业额征收的一种税。营业税属于流转税制中的一个主要税种。2011年11…

三税:营业税 ▪ 增值税 ▪ 所得税

主要关注:一般纳税人, 起征点不详细描述。


营业税(Business tax)

营业税(Business tax),是对在中国境内提供应税劳务、转让无形资产或销售不动产的单位和个人,就其所取得的营业额征收的一种税。营业税属于流转税制中的一个主要税种。2011年11月17日,财政部、国家税务总局正式公布营业税改征增值税试点方案。

营业税一般以营业收入额全额为计税依据,实行比例税率。

– 计算公式为:营业税应纳税额=计税营业额×适用税率

-适用税率,参考:营业税的税目、税率,依照本条例所附的《营业税税目税率表》执行。3%,5%

– 申报&缴纳地点:地税局

增值税 (Value-added tax)(VAT)

增值税是以商品(含应税劳务)在流转过程中产生的增值额作为计税依据而征收的一种流转税。从计税原理上说,增值税是对商品生产、流通、劳务服务中多个环节的新增价值或商品的附加值征收的一种流转税。实行价外税,也就是由消费者负担,有增值才征税没增值不征税。

– 一般纳税人适用的税率有:17%、13%、11%、6%、0%等。

计算公式为:应纳税额=当期销项税额-当期进项税额 [4]

销项税额=销售额×税率
  销售额=含税销售额÷(1+税率)[4]
  销项税额:是指纳税人提供应税服务按照销售额和增值税税率计算的增值税额。[4]
  进项税额:是指纳税人购进货物或者接受加工修理修配劳务和应税服务,支付或者负担的增值税税额。

– 小规模纳税人适用征收率,征收率为3%

应纳税额=销售额×征收率

销售额=含税销售额÷(1+征收率)

– 申报&缴纳地点:国税局

企业所得税

企业所得税是对我国内资企业和经营单位的生产经营所得和其他所得征收的一种税。纳税人范围比公司所得税大。企业所得税的征税对象是纳税人取得的所得。包括销售货物所得、提供劳务所得、转让财产所得、股息红利所得、利息所得、租金所得、特许权使用费所得、接受捐赠所得和其他所得。

– 企业所得税的税率为25%的比例税率,20%,15%,10%,每个行业不同,外加各种政策优惠的列表。

– 计算公式: 企业应纳所得税额=当期应纳税所得额*适用税率

应纳税所得额=收入总额-准予扣除项目金额

– 企业在报送企业所得税纳税申报表时,应当按照规定附送财务会计报告和其他有关资料。

– 申报&缴纳地点:地税局

关税

关税是指进出口商品在经过一国关境时,由政府设置的海关向进出口 商所征收的税收。

关税是指一国海关根据该国法律规定,对通过其关境的进出口货物课征的一种税收。关税在各国一般属于国家最高行政单位指定税率的高级税种,对于对外贸易发达的国家而言,关税往往是国家税收乃至国家财政的主要收入。

– 关税应税额的计算公式为:应纳税额=关税完税价格×适用税率。

— 从价

从价税是按进出口货物的价格为标准计征关税。这里的价格不是指成交价格,而是指进出口商品的完税价格。因此,按从价税计算关税,首先要确定货物的完税价格。从价税额的计算公式如下:
*应纳税额=应税进出口货物数量×单位完税价格×适用税率

— 其他计算方式。

– 纳税方式: 通常的关税纳税方式是由接受按进(出) 口货物正式进(出)口的通关手续申报的海关逐票计算应征关税并填发关税缴款书,由纳税人凭以向海关或指定的银行办理税款交付或转帐入库手续后,海关 (凭银行回执联)办理结关放行手续。征税手续在前,结关放行手续在后,有利于税款及时入库,防止拖欠税款。因此,各国海关都以这种方式作为基本纳税方式。

用一个查询从销售订单直通供应商账单 NetSuite

image-20240419110043185

有什么用

用一个查询从销售订单直通供应商账单 NetSuite: 从SO销售订单,到PO采购订单,到Bill供应商账单

下面文章的分享仅作为演示在SuiteQL Query Too中的展示,现实情况下的应用可以非常灵活(由于范围广泛无法此文章中展开)

怎么用

`SELECT Transaction.ID,
        Transaction.TranDate,
        BUILTIN.DF(Transaction.Type)  AS Type,
        Transaction.TranID,
        REPLACE(BUILTIN.DF(Transaction.Status), BUILTIN.DF(Transaction.Type) || ' : ', '') AS Status,
        Transaction.ForeignTotal
 FROM Transaction
 WHERE Transaction.ID IN (
         -- 这是第一个嵌套
     SELECT DISTINCT TransactionLine.Transaction
     FROM TransactionLine
     WHERE (TransactionLine.CreatedFrom in (
         -- 这是第二个嵌套
         SELECT DISTINCT TransactionLine.Transaction
         FROM TransactionLine
         WHERE (TransactionLine.CreatedFrom = 50878826)
     )
     )
 )`

背景

SO销售订单,自动生成多个PO采购订单;这些设置是定义了销售货品属于Speical Order或者Drop Ship。

当SO销售订单审批通过以后,这些PO采购订单就会自动生成,然后走采购流程,收货,预付款或最后供应商发账单Bill。另外一边继续走销售订单的系统及现实流程

那么如何通过最起初原始的一张SO销售订单,查询到一共关联到了具体哪些供应商的账单呢?

用上面那一个查询即可得出:

image-20240419111639828

而它对应了系统中的多个流程和交易订单。

分析该query查询

最小的第二个嵌套

SELECT DISTINCT TransactionLine.Transaction
FROM TransactionLine
WHERE (TransactionLine.CreatedFrom = 50878826)

查询哪些PO采购订单是创建于特定的SO销售订单(50878826),这借助了NetSuite中采购订单的ID是链接存储与SO销售订单的Item列表中(可通过‘Create PO’来查询)。

查询系统交易的交易行表(TransactionLine),通过TransactionLine.CreatedFrom指定SO销售订单,然后向上一级查询当前交易行的系统交易/订单ID。

这个查询得到了3个PO号码:

image-20240419112503073

第一个嵌套

 SELECT DISTINCT TransactionLine.Transaction
     FROM TransactionLine
     WHERE (TransactionLine.CreatedFrom in (
         -- 这是第二个嵌套
         SELECT DISTINCT TransactionLine.Transaction
         FROM TransactionLine
         WHERE (TransactionLine.CreatedFrom = 50878826)
     )
     )

这个查询其实已经查到供应商的账单了,

原理是通过已知的PO采购订单,来查询哪些交易是创建自这些PO采购订单的,而Bill供应商账单就是创建自PO采购订单的,而且他们二者通过CreatedFrom来链接。

image-20240419112939609

最上级查询

SELECT Transaction.ID,
        Transaction.TranDate,
        BUILTIN.DF(Transaction.Type)  AS Type,
        Transaction.TranID,
        REPLACE(BUILTIN.DF(Transaction.Status), BUILTIN.DF(Transaction.Type) || ' : ', '') AS Status,
        Transaction.ForeignTotal
 FROM Transaction
 WHERE Transaction.ID IN (
 --  ...
 )

该最上级查询是用于输出用户友好的结果,比如一个NS系统内部的链接(当然也可以挂一个SuiteLet链接下一步交易事务处理)

这是一个非常灵活的应用query的例子,可以无限延展出很多实例和应用,如果你有什么想法,欢迎留言或meeting

相关内容

灵感来源

NetSuite: SuiteQL and Related Transactions (Revisited)

推荐可以使用Google Chrome浏览器(JS调试)-CarlZeng

我感觉到了,效率提高了!! js的解析内核被改变了,效率非常出色!经典。 个人建议网速不够快NetSuite用户使用,:) 我这里就不截图了,点控制当前页-开发人员-JavaScript控制台,右上角的列表框中。 在下面的对话框输入方法,有点eclipse的意味。很方便,很实用。 也有一点给Chorme做广告的味道,无语,暂时个人感觉经典。 有一个缺点就是感觉:打印预览没有!(这点不如IE7.0…

我感觉到了,效率提高了!! js的解析内核被改变了,效率非常出色!经典。
个人建议网速不够快NetSuite用户使用,:)

我这里就不截图了,点控制当前页-开发人员-JavaScript控制台,右上角的列表框中。

在下面的对话框输入方法,有点eclipse的意味。很方便,很实用。

也有一点给Chorme做广告的味道,无语,暂时个人感觉经典。

有一个缺点就是感觉:打印预览没有!(这点不如IE7.0)也不懂怎么开发自己的组件插件来在Chorme中使用。(这点不如firefox)

erwin推荐的:I Love Chorme!!

推荐一下jquery, js库-CarlZeng

http://www.cnjquery.com/http://wiki.jquery.org.cn/doku.phpui例子:http://jquery.org.cn/demo/UI/两个学习站点,官方:http://jquery.com/老想着用csv来做 netsuite有可能的suitescript导入方案, 忘记了其实可以试试试用jquery 然后读取xml因为csv转化为xml是一件很容…

http://www.cnjquery.com/

http://wiki.jquery.org.cn/doku.php

ui例子:http://jquery.org.cn/demo/UI/

两个学习站点,官方:http://jquery.com/

老想着用csv来做 netsuite有可能的suitescript导入方案, 忘记了其实可以试试试用jquery 然后读取xml

因为csv转化为xml是一件很容易的事情。

例子:http://www.cnjquery.com/html/JQueryshili/200809/02-1086.html

good day try~

如何在NetSuite中使用状态步骤条 Share how to use Step Bar in NetSuite build-in UI or SuiteLet -CarlZeng

背景及应用场景

我们在使用NetSuite中的状态字段时(无论是系统的状态字段还是自定义的字段),经常会遇到状态之间的步骤性,有的流程对状态步骤有特定的需求(比如满足什么条件才可以切换到特定状态,特定状态下必须触发什么特定的事件),这时就需要:简便地查看当前步骤(所属的状态),以及目前状态在整体步骤流程中的位置,这对于操作人员有一定的帮助作用。

Step Bar,在各个框架(Bootstrap,jQuery,Ext…)中都有提及,那如何让其与NetSuite无缝衔接呢?下面我就编辑了一个Step Bar与NetSuite兼容,并且可以按需调用。

实例

使用该框架(或称为Framework,Library),我们可以实现:

  1. 在任何NetSuite可定制的页面,显示状态步骤栏(条),可以是记录的编辑页面,也可以记录的查看页面。
  2. 将NetSuite的下拉选择(Select,Dropdown Select,List/Record)字段,自动转化为Step bar显示。
  3. [待续] 可以创建一个SuiteLet批量显示一批记录及其相关的步骤条,这样我们可以在一个页面直观的看到一批记录的步骤状态,以及便捷的状态切换(动作)等等。

实现思路

在记录的User Event > beforeLoad中 调用:addStepBar(scriptContext, ‘custrecord_log_status’)

在addStepBar中几个关键步骤:

  1. 使用NetSuite自带的getSelectOptions来获取一些必要的内容objFieldOptions,获取#2参数字段的下拉选项列表 
    1. 这样我们就知道一共有几个步骤,已经每个步骤的Name 和 ID
    2. 在设计这个下来字段是,步骤的顺序很重要。 
  2. 添加一个动态的自定义字段,里面存放HTML内容(也就是上图所示的步骤条)

    1. 引用jQuery,比如jquery-3.3.1.slim.min.js
    2. 避免完整版的jQuery和NetSuite的jQuery冲突,这时我们需要 var jQuery_3_3_1 = $.noConflict(true);
    3. jQuery_3_3_1(‘.uir-page-title-secondline’).stepbar({
      items: ${JSON.stringify(objFieldOptions.items)},
      color: ‘#84B1FA’,
      fontColor: ‘#000’,
      selectedColor: ‘#223D8F’,
      selectedFontColor: ‘#fff’,
      current: ${objFieldOptions.current}
      });

写在最后面

如果您对本解决方案感兴趣,可以Email我(我可以提供参考实例下载)

FedEx Package Rate Integration with NetSuite direct integrate by WebServices-CarlZeng

Quick TECHNICAL Note

Reality: UPS only support WebServices integration(or window platform exe application: FedEx Ship Manager® Lite), friendly for JAVA, PHP or C#.

We need to calling UPS SOAP services in NetSuite directly, so there is JSON -> XML for input expected XML parameters and parse API return result XML -> JSON action. 

Different from UPS, There is high request for xml’s element order/sequence for FedEx API.

This’s a re-usable framework for intergration with WebServices platform/application.

Registration for the Developer Keys

We will need registration on webside got

Developer Test Key: PFPtfQE9ME1N****
Required for FedEx Web Services for Intra Country Shipping in US and Global

and the Email Box:

Title: Your Developer Test Key Registration is complete

Test Account Information

Test URL: https://wsbeta.fedex.com:443/web-services
Test Password: H6F4kyFrYIQxALXOTbH53****

FedEx Web Services Testing Information:
FedEx Shipping Account Number: **0088000
FedEx Meter Number: ***2012**

On NetSuite Side we are targeting to achieve xml files like the sample:

Example 1:Rate Request






XXXXXX
XXXXXX


XXXXXX
XXXXXX



XXXXXX
XXXXXX


RateRequest_v28


crs
28
0
0


2020-02-25T12:34:56-06:00
REGULAR_PICKUP
PRIORITY_OVERNIGHT
FEDEX_BOX


LB
20.0


XXXXXX

FedEx-WAPI
XXXXXX



SN2000 Test Meter 8
10 Fedex Parkway
AUSTIN
TX
XXXXXX
US



XXXXXX

Recipient Contact
XXXXXX



Recipient Address Line 1
Recipient Address Line 2
Collierville
TN
XXXXXX
US



SENDER


XXXXXX

BUSINESS_STATE
123456




LIST
1

1
1
1

LB
20.0


12
12
12
IN


XXXXXX
XXXXXX
12
ContentDescription




And all above xml element is dynamically transfered from NetSuite Sales Order data(and also data from location, currency, custom record types, settings), We got those data(in expected order), using the Google Project’s X2JS to convert from JSON to XML.

Next resolve the across domain ajax call by using NetSuite 2.0 API https.post

var response = https.post({
url: ‘https://wsbeta.fedex.com:443/web-services’,
body: new X2JS().json2xml_str(PostDataObj),
headers: {
“Accept”: “image/gif, image/jpeg, image/pjpeg, text/plain, text/html, */*”,
“Content-Type”: “text/xml”,
“Access-Control-Allow-Origin”: ‘*’,
}
});

Need to thanks this thread for useful notes: https://stackoverflow.com/questions/62523251/creating-a-http-post-call-for-fedex-web-services  

FedEx Webservices Errors

  • Response Code 400 or 500
    • Accross domain Error
    • Schema Error 
  • UnrecoverableClientError
    SchemaError
    validation failure for RateRequest Error:cvc-complex-type.2.4.a: Invalid content was found starting with element

    • Check the XML object sent to FedEx, the order of the element MUST match to the WDSL schema
    • Check the XML object elements if there is addtional property
    • FedEx 404 Unrecoverable ClientError
    • Double check the target server url address
    • test url: https://wsbeta.fedex.com:443/web-services
    • production url: https://ws.fedex.com:443/web-services

Share tools used between XML and JSON

  • Testing/xmlTOjson/jsonTOxml: https://peterdaugaardrasmussen.com/json2xml/
  • Source Code: https://github.com/abdolence/x2js
    • Useful Javascript framework for convention between XML and JSON
  • Format XML: https://jsonformatter.org/xml-formatter
  • Format JSON: https://www.sojson.com/json/json_online.html
  • XML compare/diff https://extendsclass.com/xml-diff.html
    • Be careful, the result of the xml diff is not in element order, the diff not acurate for FedEx test
  • Comparing XML files: https://extendsclass.com/xml-diff.html
  • POSTMAN simulate and compare the input and output
    • Powerful and Easy to use
  • XML Formatter https://www.freeformatter.com/xml-formatter.html
    • Make XML clean and clear
  • JSON Reviewer/Formatter http://jsonviewer.stack.hu 
    • Clean and clear
  • JSON to XML https://www.convertjson.com/json-to-xml.htm

Estimate Rate

  • UPS https://www.theupsstore.com/tools/estimate-shipping-cost
  • FedEx https://www.fedex.com/en-us/online/rating.html

Integrate with existing UPS integration

While end-use switching shipping carries, we need to clean up the backend package list data and rebuild for current shipping carrier, since UPS and FedEx are using DIFFERENT formating and propertys.

关于netsuite编辑单据页面默认打开某tab的办法-CarlZeng

我们知道 netsuite的url构造https://system.netsuite.com/app/accounting/transactions/opprtnty.nl?whence=都是有规律的! 这些nl 您传递什么参数给他, 它肯定就要要什么规律来执行了今天发现了一个新的内置参数:selectedtab例如:selectedtab=accessselectedtab=history在ur…

我们知道 netsuite的url构造

https://system.netsuite.com/app/accounting/transactions/opprtnty.nl?whence=

都是有规律的! 这些nl 您传递什么参数给他, 它肯定就要要什么规律来执行了

今天发现了一个新的内置参数:selectedtab

例如:selectedtab=access
selectedtab=history

在url上添加这个参数,告诉系统默认打开那个子TAB即可!

https://system.netsuite.com/app/common/entity/employee.nl?id=110&e=T&selectedtab=access

这样系统就帮你打开 id为110的员工的编辑页面, 并且切换到access的标签下,至于这个access如何得知,有一个方法:

打开源文件,我们可以发现这样的规律那个tab的id 永远都是类似’accesstxt’ 、’historytxt’这样的

直接把txt去掉 就是这个参数需要的数值了! 至于&e=T 我就不用多说了代表:edit=True

good day。。

关于netsuite创建组合按钮的方法,合并按钮,netsuite API-CarlZeng

组合按钮就是netsuite中比较常用的控件,就是系统自动的将相类型功能的按钮拼接在一起,在系统的设置首选项(/app/center/userprefs.nl?sc=-29)中可以控制是否使用组合按钮。合并表格中的类似按钮Check this box to roll up similar buttons on forms.For example, checking this box rolls u…

组合按钮就是netsuite中比较常用的控件,就是系统自动的将相类型功能的按钮拼接在一起,在系统的设置首选项(/app/center/userprefs.nl?sc=-29)中可以控制是否使用组合按钮。

合并表格中的类似按钮 “这是什么?”)

Check this box to roll up similar buttons on forms.

For example, checking this box rolls up all save options under the Save button. Click the arrow on the Save button to see a list of options and choose how you want to save the form.

字段ID: COMBINESIMILARBUTTONS

系统内置的api,不包含在发布的guide中。隐含API。

一下是以export按钮为例子来说明的按钮合并:

[[‘Export – CSV’, “export”],[‘Export – Microsoft ® Excel’, “exportXLS”]] 这是两个按钮,

‘Export – CSV’,’null’,’export’ 这个是默认的按钮显示,和它的ID系统既能关联出其方法来,具体方法我会单独写出来。

[‘Export – CSV’, “export”] 是一个按钮以及点击后的方法名。

![](D:imagesnavstretch.gif)

![](D:imagesnavstretch.gif)

如何[http://www.cnblogs.com/backuper/archive/2008/12/08/1350230.html](http://www.cnblogs.com/backuper/archive/2008/12/08/1350230.html)

# [JS导出txt文本文件,Netsuite方案](http://www.cnblogs.com/backuper/archive/2008/12/08/1350230.html)

document.location.replace(appendFormDataToURL(‘/app/crm/support/caselist.xls?searchtype=Case’));

上一篇内容中写到的导出txt,完全可以通过这个方法,通过suitelet自动的生成txt然后就可以弹出txt保存的窗口,提供用户下载。

这样两篇文章结合起来即可写出比较完美导出方案。利用系统隐含的API哦~~

netsuite技术客服已经建议过我,尽量少用这类的系统未公布的API,

因为netsuite完全可以不通知你的情况替换掉这个api这样你以前写的程序就应声倒下, 不好,不好~ 呵呵,,

关于NetSuite内部Enhancement发表及查看的实现(netsuite论坛,netsuite留言本,netsuite评论的实现)-CarlZeng

在system的 Enhancement Voting > Search Results > Enhancement Voting 中,我们能看到Netsuite是如何实现一个系统的评论功能,个人分析如下: 1.在Netsuite总账户中,主站点的’标签’中建立New Release Info 和 Enhancement Voting的标签,配置相应的权限,2.建立记录类型,大致字段内容如下:…

在system的  Enhancement Voting > Search Results >
Enhancement Voting 中,我们能看到Netsuite是如何实现一个系统的评论功能,
个人分析如下:

1.在Netsuite总账户中,主站点的’标签’中建立New Release Info  和 Enhancement Voting的标签,配置相应的权限,
2.建立记录类型,大致字段内容如下:
Enh No.

Product Area

Abstract

Status

Release Target

Your Rating

Click To Vote

View Comments

Total Votes

3.发布一个特定的搜索到Enhancement Voting标签下,(或者我猜测更像一个suitelet)
功能包括:搜索、提交选举(Vote)和查看用户评论(View  Comment).

这里我主要讲一下这个提交选举结果(vote)和View  Comment的实现:

4.  vote: 我们可以看到https://debugger.netsuite.com/app/site/hosting/scriptlet.nl?script=customscript_enh_vote_suitelet&deploy=customdeploy_enh_vote_suitelet&l=T&issue=844925

一看ok , this is a suitelet, named(internalId):customscript_enh_vote_suitelet
and has been deploy to be:customdeploy_enh_vote_suitelet.
我们来看这个suitelet还有两个参数。l 和issue; l猜测是列表方式,issue就是netsuite内部issue的编号。

在customscript_enh_vote_suitelet这个suitelet中,issue显然被当作一个参数来保存到这个特定的记录类型,以便用户内部标示和关联。
功能描述:suitelet create some field  for description. a TEXTAREA and a speciel control for input level.(用来浏览和界定用户关心程度);submit后系统保存这条记录到这个特定的记录类型,并且更新Total Votes数量等信息。

5。也就是查看评论功能:https://debugger.netsuite.com/app/site/hosting/scriptlet.nl?script=customscript_enh_vote_seevotes&deploy=customdeploy_enh_vote_seevotes&l=T&issue=844925
   我们可以得出这个也是一个suitelet,internalId:customscript_enh_vote_seevotes;deploy:customdeploy_enh_vote_seevotes
同样具备l参数和issue参数传递进来用来判断这个view comment能浏览到的内容列表。

功能描述:suitelet根据参数搜索得出searchresult.根据searchresult功能生成 HTML的内容页面,和一个close按钮(window.close)。

这样一个内部的评论系统就实现了。
以上是一些个人思路,希望对您有点帮助。author:zeng.cz 200811192232
Today is my girlfriend’s birthday. write this ,wish her Happy Birthday!