Netsharp快速入门(之13) 销售管理(单据流转 销售订单生成发货单)
作者:秋时 杨昶 转载须说明出处
4.5 单据流转
4.5.1 单据流转的目的
单据流转主要为了实现业务关系的流转,并记录相互之间的关系。例如从销售订单生成销货单,两张单据之间有对应的关联关系。
4.5.2 单据流转的效果
单据流转时,各个字段流转均有具体的算法。典型字段如下:
1)表头的往来单位字段,流转后,两张单据往来单位是一致的。此场景相当于直接赋值。
2)表头的单据编码,流转后,两张单据的编码有属于自己的编码规则。此场景相当于走自己的默认规则,与来源单据无关。
3)表体的数量字段,销售订单上有10个,部分流转到销货单3个,那么下次流转时,应该流转7个,而不是10个。此场景相当于需要进行计算才能得出正确值。
4.5.3 配置流转字段映射
1.从单据界面,二次开发,单据流转配置进入单据流转配置

2.新增一行,其中主实体和目标实体均设置为各自实体的表头实体

3.中间转换项目页签,是具体定义了表头到表头字段,表体到表体字段的转换关系


4.设置表头表体具体字段对应,可以使用提取工具,提取所有字段。

5.留下要用的转换字段。表头字段转换内容如下

6.表体字段转换如下,其中数量和金额都是公式计算,设置完成后保存

4.5.4 配置回写字段
1.进入回写页签,上游字段指来源实体的字段,下游字段指目标实体的字段。超单验证勾上,超量验证字段填入来源实体的字段。

4.5.5 配置单据转换方案
1.在方案表单界面,把源明细实体和目标明细实体填上,程序会根据主实体和明细实体进行单据转换

4.5.6 配置选单、生单脚本
1.配置选单脚本,要求往来单位一致且不停用,订单是生效状态,选单时销售订单的累计销货数量小于数量。选单脚本如下:
using Demo.Sales.Entity
using System.Data
//发货单 选 销售订单 的 选单条件
public QueryStruct Generate(IEntity header)
{
//header表示当前所在单据发货单
SalesDelivery delivery = header as SalesDelivery;
List<string> QueryList = new List<string>();
QueryParameterCollection qpc = new QueryParameterCollection();
//当前往来单位必须和上游的往来单位一致
if (delivery.Partner != null)
{
QueryList.Add("SalesOrder.IdPartner=@SelectedIdPartner");
qpc.Add("@SelectedIdPartner", delivery.IdPartner, DbType.Guid);
}
//已审核
QueryList.Add("SalesOrder.VoucherState='9AD02BD3-F4CE-466A-BA09-88AB9ED5D484'");
//往来单位不能停用
QueryList.Add("SalesOrder.Partner.isEnable != 0");
//销售订单的累计销货数量=数量时,则不显示
QueryList.Add("(SalesOrderDetail.SumDeliveryQuantity IS NULL OR SalesOrderDetail.SumDeliveryQuantity < SalesOrderDetail.Quantity)");
string filter = string.Join(" AND ", QueryList);
return new QueryStruct(filter, qpc);
}
2.配置生单脚本
using Demo.Sales.Entity
// 销售订单生成销货单的条件验证
public string Validate(IEntity entity)
{
SalesOrder salesOrder = entity as SalesOrder;
//往来单位不能停用
if(salesOrder.Partner.isEnable == false}
{
return "往来单位已停用,无法生单!";
}
foreach (SalesOrderDetail detail in salesOrder.SalesOrderDetails)
{
//去掉为删除状态的实体明细
if (detail.EntityState == EntityState.Deleted)
{
continue;
}
}
return null;
}
3.录入完成后保存
4.5.7 配置回写Action
暂无
Netsharp快速入门(之13) 销售管理(单据流转 销售订单生成发货单)的更多相关文章
- Netsharp快速入门(之15) 销售管理(报表B 销售季度表)
作者:秋时 杨昶 转载须说明出处 4.6.2 销售季度表(交叉表) 1.1.1.1 交叉表带数据源和不带数据源区别 带数据源的可以自定义数据源,可以从实体,也可以从Sql脚本得到数据源,并能自定 ...
- Netsharp快速入门(之10) 销售管理(插件、资源、业务建模)
作者:秋时 杨昶 时间:2014-02-15 转载须说明出处 第4章 销售模块开发 4.1 创建插件和资源 参考基础档案的开发 4.2 创建业务模型 Netsharp工具 ...
- Netsharp快速入门(之11) 销售管理(开发销售订单工作区)
作者:秋时 杨昶 时间:2014-02-15 转载须说明出处 4.3 销售订单开发 4.3.1 部件工作区设置 1.创建部件工作区,建工作区向导中要注意勾选组合并系部分.具体要建立的部 ...
- Netsharp快速入门(之12) 销售管理(开发发货单工作区)
作者:秋时 杨昶 时间:2014-02-15 转载须说明出处 4.4 发货单 4.4.1 部件工作区设置 1.设置部件工作区,需要设置的部件如下 2.设置单据和明细列表的字段,设置完成 ...
- Netsharp快速入门(之14) 销售管理(报表A 热销滞销品统计)
作者:秋时 杨昶 转载须说明出处 4.5 销售报表 4.5.1 热销滞销品统计 1.建立部件工作区,主部件选择报表.统计表,辅部件选择查询方案 2.设置报表模版.选择主部件,选择工具-报 ...
- Netsharp快速入门(之1) 介绍及需求说明
作者:秋时 杨昶 时间:2014-02-15 转载须说明出处 第一章 快速入门介绍 Netsharp是一个企业基础业务管理平台,介绍Netsharp分三个系列,分别是: 1. N ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(13)|Generics泛型]
[易学易懂系列|rustlang语言|零基础|快速入门|(13)] 有意思的基础知识 Generics泛型 我们今天来看看泛型. 什么是泛型? 我们来看看这样的情景: 我们要写一个函数,这个函数可以处 ...
- Netsharp快速入门(之2) 基础档案(之A 创建插件和资源)
作者:秋时 杨昶 时间:2014-02-15 转载须说明出处 第三章 基础档案开发 本文不再对此需求进行分析设计,其实分析设计的结果在下文会体现在平台的使用过程中,这个销售系统分成两个模 ...
- AngularJS快速入门指南13:表单
一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...
随机推荐
- win2003以isapi的方式配置php+mysql环境(安装了shopEX)
一.准备相关组件 mysql-installer-community-5.5.29.0.zip php-5.2.17-Win32-VC6-x86 ZendOptimizer-3.3.3-Windows ...
- WinForm程序安装、发布流程
一 签名 所谓签名就是给应用程序一个身份,申请一个专利.签名的时候需要选择证书.就向我们上学一样,得奖了老师给你发个证书.如果不进行签名,杀毒软件会把你打包后的exe文件作为病毒处理. 签名的步骤: ...
- 实现QQ机器人报警
如题,废话不说,直接上代码.首先是登录QQ的小脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- php去除换行(回车换行)的方法
php去除换行(回车换行)的三种方法. 代码: <?php //php 不同系统的换行 //不同系统之间换行的实现是不一样的 //linux 与unix中用 \n //MAC ...
- Android sqlite3工具的使用
sqlite3 <数据库名称> 进入数据库操作模式 eg: sqlite3 contacts.db .tables 查看所有的表 eg: .table .schema 查看查看库中所有表的 ...
- 获取月份对应的day
function getDaysInMonth(month, year) { , , , , , , , , , , , ]; //主要处理二月份的天数 ) && (year % == ...
- Python初学者笔记(3):输出列表中的奇数/奇数项,字符串中的偶数项,字符串大小写转换
[1]a=[8,13,11,6,26,19,24]1)请输出列表a中的奇数项2)请输出列表a中的奇数 解:1) a=[8,13,11,6,26,19,24] print a[::2] Result:& ...
- Python初学者笔记:打印出斐波那契数列的前10项
问题:斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.- ...
- [转载]--Ubuntu下修改DNS重启也能用的方法
安装好Ubuntu之后设置了静态IP地址,再重启后就无法解析域名.想重新设置一下DNS,打开/etc/resolv.conf cat /etc/resolv.conf# Dynamic resolv. ...
- 数组(Array),二维数组,三维数组
数组(Array):相同类型数据的集合就叫做数组. (一)定义数组的方法: A) type[] 变量名 = new type[数组中元素的个数] 例如: int[] a = new int[10] ; ...