选取销售订单开发票,控制销售订单中已开票金额

  • 一、业务场景介绍
    • 1、销售订单表DDLB、销售发票表FPLB,销售订单记录表JLB,表结构
  • 二、整体流程介绍
  • 三、具体实现
    • 1、销售发票选择了T_DD中的订单20190923,保存后,将更新记录表中订单20190923对应的明细。存储过程如下:
    • 2、销售发票作废稽核通过后,更新记录表。存储过程如下:
    • 3、销售发票申请单直接删除,删除后,更新记录表。存储过程如下:
    • 4、保存前校验金额

一、业务场景介绍

已有销售订单表DDLB,记作T_DD,有销售发票表FPLB,记作T_FP
现在开发票业务,必须选择T_DD中的一条或多条销售订单,每条订单可以全开或开一部分(即开票金额小于销售订单的销售金额)。

1、销售订单表DDLB、销售发票表FPLB,销售订单记录表JLB,表结构

CREATE TABLE FSSCSAPXSDDDYKPJLB([JLID] [varchar](36) NOT NULL,[SGXSKPNM] [varchar](36) NULL,[SGXSKPBH] [varchar](40) NULL,[SGXSKPMXNM] [varchar](36) NULL,[XSDDBH] [varchar](36) NULL,[XSDDMXNM] [varchar](36) NULL,[WLBH] [varchar](8) NULL,[BCKPJE] [decimal](15, 2) NULL,[PZBS] [varchar](2) NULL,[LogTime] [datetime] NULL,

二、整体流程介绍

三、具体实现

1、销售发票选择了T_DD中的订单20190923,保存后,将更新记录表中订单20190923对应的明细。存储过程如下:

//创建存储过程:更新记录表
ALTER proc [SP_FSSC_AR_FSSCSGXSKPYKPXSSaveAfter]
(@BillNo varchar(36)/*销售开票(手工)单据内码*/)
AS
/*------------------------------------------------------------
* 销售开票(手工)预开票销售订单,保存后记录开票销售订单信息
*  create by wahson
*  2019年9月15日
*------------------------------------------------------------*/ declare @ywlx varchar(36)select @ywlx= ROBXDJ_YWLX  from ROBXDJ where ROBXDJ_NM = @BillNo/*1.1) 编辑保存*/update FSSCSAPXSDDDYKPJLBset BCKPJE = CASE ROBXDJ_XM6    WHEN ('蓝字发票') THEN ROBXMX_SQJE WHEN ('红字发票')  THEN 0-ROBXMX_SQJE ELSE ROBXMX_SQJE END,LogTime= getdate()from ROBXMX1join ROBXDJ on ROBXDJ_NM =  ROBXMX_BXNMwhere ROBXMX_BXNM = FSSCSAPXSDDDYKPJLB.SGXSKPNM and ROBXMX_NM7 = XSDDMXNMand ROBXMX_BXNM = @BillNo/*1.2) 新增保存*/insert into FSSCSAPXSDDDYKPJLB(JLID,SGXSKPNM,SGXSKPBH,SGXSKPMXNM,XSDDBH,XSDDMXNM,WLBH,BCKPJE,PZBS,LogTime)select newid()        JLID      ,/**/ROBXMX_BXNM      SGXSKPNM   ,/*手工销售开票内码*/ROBXDJ_BH                SGXSKPBH   ,/*手工销售开票编号*/ROBXMX_NM               SGXSKPMXNM ,/*手工销售开票明细内码*/ROBXMX_DDH                XSDDBH     ,/*销售订单编号*/ROBXMX_NM7                XSDDMXNM   ,/*销售订单明细内码*/ROBXMX_NM15             WLBH       ,/*物料号*/CASE ROBXDJ_XM6  WHEN ('蓝字发票') THEN ROBXMX_SQJE WHEN ('红字发票')  THEN 0-ROBXMX_SQJE ELSE ROBXMX_SQJE END           BCKPJE     ,/*本次开票金额*/'0'                     PZBS       ,/*SAP凭证标识*/getdate()                LogTime    /*记录时间*/from ROBXMX1join ROBXDJ on ROBXDJ_NM =  ROBXMX_BXNMleft join FSSCSAPXSDDDYKPJLB on SGXSKPNM = ROBXMX_BXNM and SGXSKPMXNM = ROBXMX_NMwhere ROBXMX_BXNM = @BillNo and FSSCSAPXSDDDYKPJLB.SGXSKPMXNM is NULL/*1.3) 删除保存*/delete from  FSSCSAPXSDDDYKPJLBwhere SGXSKPNM = @BillNo and XSDDMXNM not in (select ROBXMX_NM7 from ROBXMX1 where ROBXMX_BXNM = @BillNo)

2、销售发票作废稽核通过后,更新记录表。存储过程如下:

ALTER proc [LC0029999].[SP_FSSC_AR_FSSCXSFPZFSQDJHAfter]--销售发票作废申请单稽核后
(@BillNo varchar(50)/*销售开票(手工)单据编号*/)
AS
/*------------------------------------------------------------
* 销售发票作废申请单稽核后,将预开票销售订单中的开票情况复原
*  create by wahson
*  2019年9月8日
*------------------------------------------------------------*/ /*新增保存*/insert into FSSCSAPXSDDDYKPJLB(JLID,SGXSKPNM,SGXSKPBH,SGXSKPMXNM,XSDDBH,XSDDMXNM,WLBH,BCKPJE,PZBS,LogTime)select newid()           JLID      ,/**/ROBXMX_BXNM      SGXSKPNM   ,/*手工销售开票内码*/ROBXDJ_BH                SGXSKPBH   ,/*手工销售开票编号*/ROBXMX_NM               SGXSKPMXNM ,/*手工销售开票明细内码*/ROBXMX_DDH                XSDDBH     ,/*销售订单编号*/ROBXMX_NM7                XSDDMXNM   ,/*销售订单明细内码*/ROBXMX_NM15             WLBH       ,/*物料号*/CASE ROBXDJ_XM6  WHEN ('蓝字发票') THEN 0-ROBXMX_SQJE WHEN ('红字发票')  THEN ROBXMX_SQJE ELSE ROBXMX_SQJE END YKPSL,/*蓝票取负值,红票取正值,正好与开票时抵消*/--0-ROBXMX_SQJE           BCKPJE     ,/*本次开票金额*/--金额设置为负数,和之前的记录表中的数据抵消'0'                       PZBS       ,/*SAP凭证标识*/getdate()                LogTime    /*记录时间*/from ROBXMX1join ROBXDJ on ROBXDJ_NM =  ROBXMX_BXNMleft join FSSCSAPXSDDDYKPJLB on SGXSKPNM = ROBXMX_BXNM and SGXSKPMXNM = ROBXMX_NMwhere ROBXMX_BXNM = @BillNo ;
--当订单的开票记录表中的行合计金额大于0,设置ZNOTE3 为2开票中;等于0,设置为0未开票;declare @DDBH varchar(50)/*销售订单编号*/declare @SUMJE decimal(15, 2)/*合计金额*/set @DDBH = (select top 1 ROBXMX_DDH from ROBXMX1 where ROBXMX_BXNM = @BillNo);if(@DDBH is not null and @DDBH != '')beginselect @sumJE = sum(BCKPJE) from FSSCSAPXSDDDYKPJLB where XSDDBH=@DDBH;--订单开票记录表金额总计 if(@SUMJE = 0)beginupdate FSSCSAPXSDDB set ZNOTE3 = '0' where VBELN = @DDBH;endelse if(@SUMJE != 0)beginupdate FSSCSAPXSDDB set ZNOTE3 = '2' where VBELN = @DDBH;endend

3、销售发票申请单直接删除,删除后,更新记录表。存储过程如下:

ALTER    PROCEDURE [LC0029999].[SP_FSSC_AR_FSSCSGXSKPDeleteAfter]
(@BillNo  varchar(36)  /*销售开票(手工)单据内码,*/)
AS
/*------------------------------------------------------------
* 销售开票(手工)删除单据后扩展
1)单据删除后更新预开票销售订单开票记录表
*  create by wahson
*  2019年6月28日
*------------------------------------------------------------*//*------------------------------------------------------------* 3)销售开票(手工)单据删除后更新预开票销售订单开票记录表*------------------------------------------------------------*//*删除扣款记录表的记录*/delete from FSSCSAPXSDDDYKPJLBwhere SGXSKPNM  = @BillNo and PZBS = '0'

4、保存前校验金额

USE [cwbase002]
GO
/****** Object:  StoredProcedure [LC0029999].[SP_FSSC_AR_FSSCSGXSZCSQSaveBefore]    Script Date: 2019/9/25 15:03:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GOALTER    PROCEDURE [LC0029999].[SP_FSSC_AR_FSSCSGXSZCSQSaveBefore]
(@BillNo  varchar(36),/*销售开票(手工)单据内码*/
@MXNM   varchar(36),/*资产类申请单明细内码*/
@BCSL   varchar(36)/*本次数量*/)
as
/*------------------------------------------------------------
* 销售开票(手工)处理固定资产调拨/报废出售业务,资产明细保存前校验
* * * 校验多张销售开票的累计数量不大于资产申请单明细对应数量
*  create by wahson
*  2019年7月9日
*------------------------------------------------------------*/declare @yzjg varchar(10) /*验证结果:'true','false'*/        declare @SL_Before decimal(24,7)/*记录表中的金额--除去销售开票的资产明细*/select  @SL_Before = case when sum(YKPSL) is null then 0 else sum(YKPSL) end from FSSCSGXSGLZCSQJLwhere SQDJMXNM = @MXNM and SGXSNM <> @BillNoselect @yzjg =  case when  (ROSQXCMX_SZ1 >= @SL_Before + convert(decimal(24,7),@BCSL) and @SL_Before + convert(decimal(24,7),@BCSL)  > = 0 )then 'true' else 'false' end from ROSQXCMXwhere ROSQXCMX_NM = @MXNMselect @yzjg  yzjg

选取销售订单开发票,控制销售订单中已开票金额相关推荐

  1. 先开发票、后付款的法律风险有多大?

    #工商财税服务# 相信很多企业都有遇到过收款时对方会说"先开发票后付款"这种情况,硬要先付款后开发票的话又担心影响合作,若先开发票后付款又担心对方到时耍赖,究竟该怎么办呢? 发票是 ...

  2. CRM及协同办公高保真原型、审批管理、办公申请、工单管理、任务管理、日程管理、工作报告、签到考勤、客户管理、销售线索、商机管理、订单管理、账务管理、统计报表、回款管理、发票管理、报销管理、客户关系管理

    CRM及协同办公高保真原型.审批管理.办公申请.工单管理.任务管理.日程管理.工作报告.签到考勤.客户管理.销售线索.商机管理.订单管理.账务管理.统计报表.回款管理.发票管理.报销管理.客户关系管理 ...

  3. 旺店通·企业奇门与用友BIP旺店通销售出库单对接销售订单

    通过集成平台可视化的配置系统集成对接 源系统平台:旺店通·企业奇门 源系统接口: 查询销售出库单wdt.stockout.order.query.trade 目标系统平台: 用友BIP 目标系统接口: ...

  4. 销售订单_跨公司销售

    销售订单_跨公司销售 by 枫竹丹青 ⋅ Leave a Comment 一.说明 在由多个公司组成的企业集团中,通常会有一种跨公司销售业务,A公司与客户洽谈,在ERP系统中创建销售订单,但货物由B公 ...

  5. sap采购申请自动转采购订单_SAP idoc功能够强大: 采购订单修改自动触发销售订单修改...

    笔者在上一篇文章 SAP idoc功能够强大: 采购订单下达自动触发销售订单创建 中详细说明了如何通过IDOC来实现当公司A下达向公司B的采购订单自动在公司B中创建对公司A的销售订单,且传回订单确认信 ...

  6. 销售订单(SO)-API-创建销售订单

    转自:销售订单(SO)-API-创建销售订单 - 开发者知识库 (itdaan.com) 创建销售订单API主要注意几点: 初始化环境变量:fnd_global.apps_initialize(); ...

  7. 为什么S/4HANA的销售订单创建会触发生产订单的创建

    调用S/4HANA销售订单创建函数SD_SALES_DOCU_MAINTAIN创建一个销售订单时,会触发生产订单的创建. 销售订单的每个行项目对应一个独立的生产订单,SD_SALES_DOCU_MAI ...

  8. 为什么S/4HANA的销售订单创建会触发生产订单的创建 1

    调用S/4HANA销售订单创建函数SD_SALES_DOCU_MAINTAIN创建一个销售订单时,会触发生产订单的创建. 销售订单的每个行项目对应一个独立的生产订单,SD_SALES_DOCU_MAI ...

  9. jeecg-boot自动生成代码_无代码实现销售系统自动判定并生成订单功能

    ERP项目中,业务员创建销售单后,还需要确认产品库存是否充足,如不充足,还需要手动创建生成订单通知车间进行生产,比较麻烦,客户希望系统可以自动进行判断,自动根据现有库存生成生产订单. 目标: 新建销售 ...

  10. 金色传说:SAP-ABAP-销售订单增强:记录销售订单修改信息和修改原因

    业务场景 为了记录从客户或经销商询单到正式下达销售订单的过程并分析,需要记录销售订单创建和修改时的关键信息,其中包括:客户.物料.订单数量.交货日期.更改原因. 解决方案 创建销售订单时自动记录关键信 ...

最新文章

  1. 转-Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
  2. MFC 中屏蔽CDialog类窗体处理ESC和ESCAPE按键
  3. gis影像格式img转为ecw_医学影像图片格式
  4. 【Git】Git提交代码到GitHub的基本操作流程
  5. android 4.4 linux 内核版本,稳定内核版本和更新  |  Android 开源项目  |  Android Open Source Project...
  6. update怎么同时改两个字段_[NewLife.XCode]高级增删改
  7. Xgboost中特征重要性计算方法详解
  8. 18_多易教育之《yiee数据运营系统》用户画像-事实标签计算篇
  9. BET365的websocket实时数据采集分析
  10. ttl一会255一会64_什么是TTL 生存时间?Ping TTL的含义
  11. Vue实现导入Excel功能
  12. Python Tensorflow + CNN + Opencv 英雄联盟小地图识别,LOL Minimap Scanner
  13. 【图形图像处理】之位图图像和矢量图形有何区别?
  14. 读《STRENGTHNET: DEEP LEARNING-BASED EMOTION STRENGTH ASSESSMENT FOR EMOTIONAL SPEECH SYNTHESIS》
  15. git 忽略某些文件
  16. 阿里云服务器是什么/阿里云服务器是干嘛用的
  17. 朊病毒简记|症状与机理
  18. 微信小程序项目优化(初学者)
  19. 智慧海洋建设-Task1地理数据分析常用工具
  20. android播放器1004,Android音频开发MediaPlayer(-38,0)(-1004)错误解决

热门文章

  1. HTML期末大学生网页设计作业--官网仿qq音乐(1页)
  2. 自动升级Notes客户机AUT功能实战
  3. 我知道的Activity
  4. 【GCC】warning: pointer targets in passing argument 1 of 'strlen' differ in signedness
  5. css3动画按钮_CSS3的动画按钮
  6. matlab产生泊松分布
  7. 两只小企鹅(Python实现)
  8. 电影:少年派的奇幻漂流(Life of Pi)
  9. 用笔记本做wifi热点
  10. 《猎头局中局》观后感