增加判断支付日期-申请日期<=3则不通过,增加支付日期不为空检测。

本文详细阐述了生产性付款过程中涉及的流程、数据校验规则及关键步骤,包括支付日期验证、合同报告上传需求、金额计算、预算核减、供应商匹配等多个方面,旨在确保财务操作的合规性和准确性。
--生产性付款,增加判断支付日期-申请日期<=3则不通过。增加支付日期不为空检测。
function UserDefineDjSave()
{
var ss=dataset3.Fields.Field['ZhiFuRiQi'].Value;
          _Type = parent.Request.QueryString("opentype");

          var fjgs=sys_getUploadfiles();  
         if((fjgs<='0') &&(radioEng.value=='是'))
        {  
      	   return "请上传工程验收报告扫描件!";  
         }  
 if (combobox4.value == "") { return "请选择“经济业务”!";	 }


 if ((combobox4.value == "1")&&(txtContractName.value=="")) { return "请点击“选择合同评审单”,查到本次付款相关的合同后确认!";	 }


dataset3.Update('不检查');


           if (txtDeptID.value == "") { return "归属事业部不能为空!";	 }
	if (txtAppDeptID.value == "") { return "申请部门不能为空!";	 }
	if (txtAppUserName.value == "") { return "申请人不能为空!";	 }
	if (txtAppDate.value == "") { return "申请时间不能为空!";	 }
	if (cmbPeriod.value == "") { return "期间不能为空!";	 }


	if (txtcompanyName.value == "") { return "供应商名称不能为空!";}
 /////////增加支付日期检测--,须先定义变量------------------------
if((ss=="")&&(txtAppDate.value>'2012-10-17')) 
{ return "支付日期不能为空!";	 }
////////////-----------------------------------------

           //alert(_Type);
           if(_Type =='1')
           {
           
               Sum();
textbwb.value=(text32.value)*(texthl.value);


               //alert(text32.value);
               if(parseFloat(text32.value)<=0)
                    return "总金额不能为0";
            if(parseFloat(textbwb.value)<=0)
                    return "本位币总金额不能为0,请确保付款明细金额和汇率值不能为0!";


               if(txtDeptName.value!="公司总部")
               {
                    //var sql="select * from Form_YS_PayApply where 1=2";
                    //dataset9.Open(sql);
                    //alert(aaa);
               }
               else
               {
                   if(dataset9.Fields.Field['sum'].Value=="")
                           text34.value=0;
                   else
                           text34.value=dataset9.Fields.Field['sum'].Value;


                   if(parseFloat(text34.value) != parseFloat(text32.value))
                           return "分摊总金额与本批付款总金额不等!";
               }
             
 
             }
            
           getDJSN();
           var len=dataset3.RecordCount;
           dataset3.MoveFirst();
           for(var i=1;i<=len;i++)
           {
                 if(txtcompanyName.value!=dataset3.Fields.Field['companyName'].Value)
                 {
                       return "第 "+i+" 行供应商名称与所填写的不一样!";
                 }


                 if(parseFloat(dataset3.Fields.Field['YuE'].Value)<parseFloat(dataset3.Fields.Field['HeJi'].Value))
                      return "第 "+i+" 行本次付款金额不能大余额!";
                 //if(sys_getUserName()=="实施2")
                 //{
                    var jine=dataset3.Fields.Field['HeJi'].Value;
                    if(jine=="")
                       jine=0;
                   if(jine<=0)
                      return "第 "+i+" 行金额不能为空!";
                  //}
                   var day=DateDiff(dataset3.Fields.Field['ZhiFuRiQi'].Value,txtAppDate.value);
                   if((day<=3)&&(txtAppDate.value>'2012-09-26'))
                       return "支付日期-申请日期不能小于等于三天";
               
                 dataset3.MoveNext();
           }
    	//alert(dataset3.Fields.Field[''].Value);                 
            return DjSave();
}


function DateDiff(sDate1, sDate2)
{ 
   //sDate1和sDate2是2004-10-18格式 
  var aDate, oDate1, oDate2, iDays; 
aDate = sDate1.split("-");
oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]); //转换为10-18-2004格式 
aDate = sDate2.split("-"); 
oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]); 
iDays = parseInt((oDate1 - oDate2) / 1000 / 60 / 60 /24); //把相差的毫秒数转换为天数 
if (iDays>=0)
{iDays = iDays+1}
if (iDays<0)
{iDays = iDays-1}
return iDays;
}

function UserDefineAppEnd()
{
           //UserDefineAppEnd2();
//getDJSN();

	//审批结束标记:2,正在审批;1审批结束通过;0审批结束不通过;
	var AppFlag = parent.toolbar.document.all.hidApproveFlag.value;
	
	//审批删除标记:0未删除;1删除;
	var DelFlag = parent.toolbar.document.all.hidAppDelFlag.value;


	
	if (AppFlag == "1")//报销结束扣减预算
	{
		
	}
}


<think>嗯,用户现在想了解如何为机票预订系统绘制详细的UML活动图,包括旅客信息处理、证件验证、延误取票、航班取消和临时更改航班这些功能的流程分析。首先,我需要回想一下UML活动图的基本元素,比如活动、决策节点、合并节点、泳道等等。活动图适合描述业务流程,所以得把整个机票预订的流程分解成各个步骤,然后用活动图表示出来。 用户提到的系统功能包括输入旅客信息、安排航班、支付定金、打印通知和账单,以及后续的取票、证件验证,还有处理延误、航班取消和更改航班的情况。这些都需要在活动图中体现出来。可能需要分同的泳道,区分旅客、系统和航公司工作人员的同活动。 首先,主流程应该是旅客提交信息,系统验证证件合法性。这里要确保身份证的有效性,可能需要连接到外部系统进行验证。然后系统安排航班,生成预定记录。旅客支付定金后,系统打印通知和账单。之后在起飞前一天取票,系统核对信息,打印机票。这部分是正常流程。 接下来是异常情况,比如旅客延误取票时间。这时候可能需要检查是否在宽限期内,如果是,允许取票,否则取消预定。航班取消的话,系统需要通知旅客,提供改签或退款的选项,并更新航班信息。临时更改航班的话,旅客提出请求,系统检查航班可用性,然后确认更改,更新记录并可能补差价。 还需要考虑技术限定条件,比如证件的合法性验证,补充的三个功能如何处理。可能需要在活动图中加入决策节点,判断各种情况,比如证件是否有效,是否在宽限期内,航班是否还有座位等。 可能还需要考虑并发流程,比如定期查询统计航班乘载情况,但用户主要关注的是预定流程中的活动,这部分可能放在另一个泳道或者单独处理。过根据用户的问题,可能需要集中在旅客相关的流程上。 要注意活动图的开始和结束节点,每个活动的顺序是否正确,是否有遗漏的步骤。比如,在旅客支付定金后,系统是否要等待到起飞前一天才处理取票,或者是否有其他的触发条件。另外,处理延误取票时,是否需要自动检测时间,还是由旅客主动操作? 可能还需要考虑系统如何与外部系统交互,比如支付系统、身份证验证系统,这些可以用活动图中的外部参与方或系统来表示。 现在需要组织这些步骤,用泳道区分同的参与者,比如旅客、系统、航公司,然后按照流程画出活动图。每个决策点都要有明确的条件,比如[证件有效?],[支付成功?],[在宽限期内?]等。 最后,确保所有补充功能都涵盖在内:延误处理、航班取消、更改班次。每个功能对应的流程都要在活动图中体现,可能需要单独的分支或子流程。 总结一下,步骤应该是:确定参与者和泳道,分解主流程和异常流程,标识决策节点,绘制活动图,验证是否覆盖所有功能点,特别是用户提到的三个补充功能。</think>### 机票预定系统UML活动图绘制方法 #### 一、核心流程分析 1. **主流程划分** - **旅客信息处理流程**:旅行社输入旅客信息(姓名、性别、身份证号等)后,系统需验证$身份证合法性$[^1],通过后分配航班并生成预定记录。 - **取票与支付流程**:旅客支付定金后生成取票通知,起飞前一天需完成$证件二次验证$(取票通知+账单)才能获取机票[^1]。 - **异常处理流程**:包含延误取票、航班取消、临时改签三类分支。 2. **泳道设计建议** ```plaintext | 旅客 | 系统 | 航公司 | |-------------|---------------|------------| | 提交信息 | 验证证件 | 调整航班 | | 支付定金 | 分配航班 | 统计乘载率 | | 申请改签 | 生成通知/账单 | 取消航班 | ``` #### 二、详细活动图节点 1. **基础流程节点** ```mermaid graph TD A[旅客提交信息] --> B{系统验证} B -->|有效| C[分配航班] B -->|无效| D[返回错误] C --> E[生成预定记录] E --> F[支付定金] F --> G[打印取票通知] ``` 2. **异常处理扩展** - **延误取票**: $$判断条件: t \leq T_{起飞}-24h + \Delta t_{宽限}$$ 超时则触发$预定取消$并退还部分金额[^1] - **航班取消**: ```mermaid graph LR H[航班状态更新] --> I{是否取消} I -->|是| J[通知旅客] J --> K[选择改签/退款] ``` - **临时改签**: - 需验证$新航班乘载率 \leq 阈值$ - 涉及$差价计算$与$二次支付验证$ #### 三、关键技术点标注 1. **证件验证规则** - 身份证校验需满足: $$Luhn算法校验 \land 行政区划码有效 \land 出生日期合法$$ 引用民航总局认证接口[^1] 2. **状态机关联** ```python class Reservation: def __init__(self): self.states = [&#39;pending&#39;,&#39;paid&#39;,&#39;canceled&#39;,&#39;completed&#39;] self.transitions = { &#39;pay&#39;: {&#39;pending&#39;:&#39;paid&#39;}, &#39;cancel&#39;: {&#39;paid&#39;:&#39;canceled&#39;}, &#39;confirm&#39;: {&#39;paid&#39;:&#39;completed&#39;} } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值