创建函数去掉非字符的数字
drop procedure [dbo].[zp_z_BOM_FU]
drop function [dbo].[F_GetChar]
create function [dbo].[F_GetChar] --创建函数去掉非字符的数字
(
@No varchar(100)
)
RETURNS varchar(100)
AS
BEGIN
WHILE PATINDEX('%[^.]%',@No)>0
BEGIN
SET @No = STUFF(@No,PATINDEX('%[^.]%',@No),1,'') --删掉一个非字符的数字,循环结束,剩余的为数字部分
END
RETURN CONVERT(varchar(100),@No)
END
1、创建供应商维护价格视图z_view_SupplyRatePrice,代码如下:
/*--1、创建供应商维护价格视图z_view_SupplyRatePrice,代码如下:*/
create view [dbo].[z_view_SupplyRatePrice]
as
select
u1.*,
t1.FValueAddRate, --供应商表.增值税率
t2.FCoefficient, --计量单位表.系数
t3.FExchangeRate --币别表.汇率
from t_supplyentry u1 --供应商供货明细表
inner join t_supplier t1 --供应商表
on t1.fitemid = u1.fsupid --供应商表.供应商内码 = 供应商供货明细表.供应商内码
inner join t_MeasureUnit t2 --计量单位表
on t2.FItemID = u1.Funitid --计量单位表.单位内码 = 供应商供货明细表.单位内码
inner join t_currency t3 --币别表
on t3.Fcurrencyid = u1.FCyID --币别表.币别内码 = 供应商供货明细表.币别
2、创建实际入库价格视图z_view_OrderPrice,代码如下:
/*2、创建实际入库价格视图z_view_OrderPrice,代码如下:*/
create view
[dbo].[z_view_OrderPrice]
as
select
t1.finterid, --出入库单据表.单据内码
t1.fdate, --出入库单据表.单据日期
case when Forderinterid > 0 then 1 else 0 end as Forderinterid,
-- 出入库单据分录表.订单内码 大于0 则为1 否则为 0
t2.Fitemid, --出入库单据分录表.物料内码
case t1.ftrantype when 1 then t2.Fprice
when 5 then FProcessprice end as Fprice
-- 出入库单据表.单据类型 为 1 则取 出入库单据分录表.单价 ,为 5 则取委外加工入库增加加工单价
from
ICStockBill t1 --出入库单据表
inner join ICStockBillEntry t2 --出入库单据分录表
on t1.finterid = t2.finterid --出入库单据表.单据内码 = 出入库单据分录表.单据内码
inner join t_MeasureUnit t3 --计量单位表
on t3.Fitemid = t2.Funitid --计量单位表.单位内码 = 出入库单据分录表.单位内码
where t1.ftrantype in (1,5) --出入库单据表.单据类型
and t1.FROB = 1 --出入库单据表.红蓝字 1 蓝字,-1 红字
3、创建存储过程zp_z_ProduceCostNow,代码如下:
/*--3、创建存储过程zp_z_BOM_FU,代码如下:*/
create procedure [dbo].[zp_z_BOM2019_FU]
@starFnumber nvarchar(50)
--@endFNumber nvarchar(50)
as
set nocount on
/*
declare @Fitemid int
set @Fitemid = (select top 1 Fitemid from t_icitem where Fnumber = @Fnumber)
*/
/**********************************************************************/
/*********************************************************************/
create table #Product --创建临时表:产品
(
FParentID int default 1,
sn nvarchar(100) default '1', --层级
FEntryID nvarchar(100) default '0' not null, --BOM单分录号
fitemid int, --物料内码
Flevel nvarchar(100) default '0', --层次
fqty decimal(18,6) default '1', --用量, 标准单位
FAuxqty decimal(18,6), --显示用量
FunitID int, --单位
FErpClsID int default '0', --物料属性
FMaterType int, --领料类型
FError int default 0, --错误状态
Fstatus int, --审核状态 0.未审核 1.已审核
FUseStatus int, --使用状态 1072.已使用 1073.未使用
FBOMSkip int, --是否跳层
FIsKeyItem bit, --关键件
FForbid int, --禁用
FEnterTime datetime --最近修改时间
)
create table #ProductEntry --创建临时表:产品分录
(
FParentID int default 1,
sn nvarchar(100) default '1', --层级
FEntryID nvarchar(100) default '0' not null, --BOM单分录号
fitemid int, --物料内码
Flevel nvarchar(100) default '0', --层次
fqty decimal(18,6) default '1', --用量, 标准单位
FAuxqty decimal(18,6), --显示用量
FunitID int, --单位
FErpClsID int default '0', --物料属性
FMaterType int, --领料类型
FError int default 0, --错误状态
Fstatus int, --审核状态 0.未审核 1.已审核
FUseStatus int, --使用状态 1072.已使用 1073.未使用
FBOMSkip int, --是否跳层
FIsKeyItem bit, --关键件
FForbid int, --禁用
FEnterTime datetime --最近修改时间
)
create table #z_productCost --创建临时表:产品成本表
(
Finterid int not null IDENTITY (1, 1) primary key, --单据内码
fitemid int, --物料内码
FError int default 0, --错误状态
FunitID int, --单位
FErpClsID int default '0', --物料属性
FMaterType int, --领料类型
Fstatus int, --审核状态 0.未审核 1.已审核
FUseStatus int, --使用状态 1072.已使用 1073.未使用
FBOMSkip int, --是否跳层
FIsKeyItem bit, --关键件
FForbid int, --禁用
FEnterTime datetime, --最近修改时间
FSupplyAmount numeric(18,6) default 0, --供应商维护金额
FStockAmount numeric(18,6) default 0, --最新入库价金额
WorkingHours numeric(18,6) default 0, --工时
LaborCost numeric(18,6) default 0 --人工
)
create table #z_productCostEntry --创建临时表:产品成本分录表
(
Finterid int not null, --单据内码
sn nvarchar(100) default '1', --层级
FEntryID nvarchar(100) default '0' not null,