环思产品论坛
标题: [51180 ]大货处方单(染绒、染纱) [打印本页]
作者: wangwenwen 时间: 2016-4-11 16:19
标题: [51180 ]大货处方单(染绒、染纱)
本帖最后由 xuming 于 2016-6-12 10:39 编辑
功能概述
根据染色卡来进行开处方,生成处方单和上传处方单的功能页面
操作流程
操作流程说明:
1、用户打开界面
2、用户点击新建,会在当前染色卡下的处方列表里新建一条处方。
3、系统自动根据用户操作进行保存处理。
4、UI原型图
参数说明
1、参数功能说明
参数分为两种一个为染绒和脱色,染纱。根据不同的参数来进行对form的分类
Ref参照
1、单据状态:从常量明细表pbConstDtl里面查询出可用的并且常量值为292的信息
2、处方类型:从常量明细表pcConstDtl里面查询出可用的并且常量值为1355的信息
3、辅助染程:从染程主表tmDyeingCurveHdr里面查询出可用的辅助染程编号,辅助染程名称和ID
4、染程:从染程主表tmDyeingCurveHdr里面查询出可用的染程编号,染程名称和ID
5、物料名称;从染化料物料表mmMaterialChemical里面查询出可用的染化料ID,染化料编号和染化料名称。
6、用量类型:从常量明细表pbConstDtl里面查询出可用的并且常量值为1444的信息。
7、来源:从常量明细表pbConstDtl里面查询出可用的并且常量值为1493的信息。
查询业务逻辑
1、染色卡列表:从染色工卡表里面查询出当前参数值的所有染色卡
2、处方列表:根据选中的染色卡查询出对应的处方列表
3、染色处方明细:根据选中的处方列表查询出对应的染色处方明细
单点功能说明
1、生成处方单:
IIf(EntitySet.IsNotEmpty(dtlEntitySet),HS.Success,HS.Default);
如果dtl实体集不为空,则执行HS.Success,否则执行HS.Default
HS.Default=EntitySet.AddNew.BySql(dtlEntitySet,38788 ,mainEntitySet+IndexEntitySet);
RefreshUI();
HS.Default=通过sql38788来新建数据,参数取自main实体集和index实体集。
刷新UI
HS.Success=Ask(当前已有处方单,新增则会删除原有的处方单,是否继续?);
EntitySet.Clear(dtlEntitySet);
EntitySet.AddNew.BySql(dtlEntitySet,38788 ,mainEntitySet+IndexEntitySet);
RefreshUI();
HS.Success=询问‘当前已有处方单,新增则会删除原有的处方单,是否继续?’
是则执行清空实体集dtl,否则不做修改。
清空后执行新增sql38788来新建数据,参数取自main实体集和Index实体集。
刷新UI
SQL--38788=SELECT a.iIden,a.iMaterialId,nDosage=CAST(A.nDosage AS DECIMAL(18,4))
,c.iStepNo,e.sMaterialNo,e.sMaterialName
,sDyeingCurveName=c.sRemark
,iDyeingCurveId=c.iIden
,sDyeingCurveNo=c.sBillNo
,iSourceType=CONVERT(INT,0)
,iCalcType=CONVERT(INT,3)
FROM dbo.tmDyeingColorTemplateRecipe a WITH(NOLOCK)
JOIN dbo.tmColor b WITH(NOLOCK) ON a.iHdrId=b.iIden
JOIN dbo.tmDyeingCurveHdr c WITH(NOLOCK) ON b.iDyeingCurveId=c.iIden
LEFT JOIN dbo.pbUnit d WITH(NOLOCK) ON a.iUseUnitId=d.iIden
LEFT JOIN dbo.mmMaterial e ON a.iMaterialId=e.iIden
WHERE a.iHdrId=:iColorId
查询出信息定义来源类型为0配方燃料,并且用量类型为3缸卡百分比的所有处方单
UNION ALL
SELECT A.iIden,A.iMaterialId,nDosage=CAST(A.nDosage AS DECIMAL(18,4))
,A.iStepNo,B.sMaterialNo,B.sMaterialName
,sDyeingCurveName=C.sRemark
,iDyeingCurveId=A.iHdrId
,sDyeingCurveNo=C.sBillNo
,iSourceType=CONVERT(INT,1)
,iCalcType=CONVERT(INT,1)
FROM dbo.tmDyeingArtRouteChemicalDtl A WITH(NOLOCK)
LEFT JOIN dbo.mmMaterial B WITH(NOLOCK) ON A.iMaterialId=B.iIden
LEFT JOIN dbo.tmDyeingCurveHdr C WITH(NOLOCK) ON A.iHdrId=C.iIden
WHERE A.iHdrId=:iDyeingCurveId AND A.iDyeingCardType=:iDyeingCardType
UNION ALL
SELECT A.iIden,A.iMaterialId,nDosage=CAST(A.nDosage AS DECIMAL(18,4))
,A.iStepNo,B.sMaterialNo,B.sMaterialName
,sDyeingCurveName=C.sRemark
,iDyeingCurveId=A.iHdrId
,sDyeingCurveNo=C.sBillNo
,iSourceType=CONVERT(INT,2)
,iCalcType=CONVERT(INT,2)
FROM dbo.tmDyeingArtRouteChemicalDtl A WITH(NOLOCK)
LEFT JOIN dbo.mmMaterial B WITH(NOLOCK) ON A.iMaterialId=B.iIden
LEFT JOIN dbo.tmDyeingCurveHdr C WITH(NOLOCK) ON A.iHdrId=C.iIden
WHERE A.iHdrId=:iDyeingCurveExId AND A.iDyeingCardType=:iDyeingCardType
2、上传处方单:
3、删除处方单:
4、批量开处方:
EntitySet.ValidateEmpty(mainEntitySet,您未指定任何行!); --判断是否选中一行main实体集的数据。
EntitySet.JoinText(outParam.sCardNos,indexEntitySet,sCardNo);--将index实体集的sCardNo串联起来,默认‘,’间隔,传给外部参数sCardNos
ExecSql(38722);--执行sql38722
DoLastQuery();--速查
sql执行脚本321_BatchPrescription
--需要开处方单的卡
--查询卡信息,合卡的要汇总产量,写入临时表
--循环生成处方单
--计算染色水位
--写入处方头
--先写入配方染料
--再写入染程助剂
--辅助染程助剂
--更新染料百分比处方单位用量
--更新处方用量
--加此变量是为了抛出错误显示小色号
--写入处方明细
5、计算用量:
GridView.GetSelectedRowsXML(grvDtl,nDosage+nCustomerDosage+iSourceType+iCalcType,outParam.sXML,,true);--将选中行的数据转化为临时表,写入选择的列。
EntitySet.RetriveBySql(dtlEntitySet,38831,outParam+indexEntitySet,,false,iIden,3);--刷新实体类行的数据。
--计算过程
UPDATE A
SET @nDosage=Round(@nDosageSum * A.nOriginalRate,4)
,@nDosage=CASE WHEN @nDosage<0.4 THEN 0.4 WHEN @nDosage>1.5 THEN 1.5 ELSE @nDosage END
,nDosage=@nDosage
,nQty=CASE
WHEN iSourceType IN (0,2) THEN ROUND(@nQty * A.nDosage * 10,3)--配方和手工加的都是缸卡比例算
WHEN iCalcType=1 THEN A.nDosage --固定用量
WHEN iCalcType=3 THEN Round(@nQty * A.nDosage * 10, 3) --缸卡百分比
WHEN iCalcType=2 THEN --染料百分比
CASE WHEN nCustomerDosage<0 THEN ROUND(@nQty * @nDosage * 10, 3)
ELSE Round(@nQty * A.nCustomerDosage * 10, 3)
END
ELSE -1 --错误情况
END
FROM #Dtl A
WHERE iSourceType NOT IN (0,2) AND A.iCalcType=2
欢迎光临 环思产品论坛 (http://bbs.huansi.cn/) |
Powered by Discuz! X3.2 |