全文
甲公司乙公司承揽合同纠纷二审民事判决书
江苏省南通市中级人民法院
民事判决书
(2021)苏06民终1634号
上诉人(原审被告):丙公司,住所地上海市奉贤区某地5幢129室。
法定代表人:尹某,该公司执行董事。
委托诉讼代理人:王某,某律师事务所律师。
被上诉人(原审原告):乙公司,住所地江苏省启东市某地669-1号2408室。
法定代表人:刘某,该公司执行董事。
委托诉讼代理人:周某,某律师事务所律师。
丁公司(以下简称甲公司)戊公司(以下简称戊公司)承揽合同纠纷一案,不服江苏省启东市人民法院(2020)苏0681民初2285号民事判决,向本院提起上诉。本院于2021年4月7日立案后,依法组成合议庭进行了审理。本案现已审理终结。
甲公司上诉请求:1.撤销一审判决,己公司的诉讼请求;2.庚公司承担。事实和理由:1.一审法院对“UI设计稿”的确认时间认定正确,但其认定“开发阶段”完成时间点为9月26日错误,显然混淆了“开发阶段”与“测试阶段”的概念。开发结果到最终交付成果是一个循序渐进的过程,测试的目的就是发现问题、修改问题。不用说新开发的软件,哪怕一个成熟的软件在上线后还要不断更新、修改,才能趋于完善。从双方合同约定的付款节点表格中不难看出,开发阶段和测试分属不同阶段。而且从技术合同惯例来说,开发阶段与测试阶段也是两个概念。结合合同第五条以及双方关于“自双方确认UI之日起70个自然日为开发阶段”的约定,能完全理解开发阶段是完成软件代码开发的过程,测试是对开发阶段成果的验证,不应当包括在开发阶段的时间内。而一审法院罔顾事实,错误对其进行解释和理解。事实上,本案中双方在合同中约定开发阶段为70个自然日。辛公司于5月31日、6月2日、壬公司进行软件测试,该时间段才是“开发阶段”,甲公司已在期限内完成“开发阶段”任务,并未超出开发阶段期限。后续直至9月26日期间,都是完成测试阶段的过程。一审法院将测试时间认定为开发阶段,显然违背常识,也显失公平。另外,软件测试是需要软件开发委托一方来主导完成的过程,该时间周期计算在开发阶段很容易被恶意利用导致开发延期违约,显然有失公平。2.一审法院忽略甲公司提出的“先履行抗辩权”,癸公司未履行按合同节点先付款义务的事实,子公司开发时间逾期构成违约,更是在判决书中对该抗辩理由只字未提。根据合同中关于付款节点的约定,戊公司在开发阶段应当自UI确认后每15个自然日付7.5%的技术开发费用,丑公司自4月23日UI确定后就一直迟延付款,已先行构成违约。寅公司发函催款后,戊公司才于7月29日履行开发阶段的付款义务。就算搁置上述开发阶段是否包含测试阶段不论,戊公司迟延履行付款义务的情况下,卯公司实际履行付款义务的7月29日开始计算,该时间点到一审法院认定的开发阶段完成日,也未超出70个自然日的周期。
戊公司辩称:1.一审法院认定案涉小程序开发阶段完成时间为2019年9月26日正确,也符合合同约定和软件开发的惯例。甲公司提出的软件测试时间不包含在开发阶段,没有合同依据,属于逃避法律责任。根据案涉合同第三条第一款、第一条第六款、第二条第2.5款约定的内容来看,完成开发阶段不仅需要完成小程序的编码工作,使得小程序符合项目架构要求,没有重大BUG,还得通过内测和公测,并最终上线正常运营,故合同约定的开发阶段当然包括测试阶段。而且根据一般常识,开发阶段和测试阶段是不可分割的,辰公司作为开发方是否按约完成开发任务的唯一途径。如果开发阶段不包含测试,则无法认定开发方是否完成开发任务和是否符合约定的开发结果,也无法确定开发阶段完成的具体时间。因此,甲公司巳公司的小程序体验版或者2019年6月5日发送的测试通知函,试图说明已经完成了小程序的技术开发,显然不符合合同约定,也与软件开发惯例相违背。2.甲公司未按约定的开发时间完成小程序开发任务,一审法院根据合同约定并结合甲公司履行合同的情况,午公司支付违约金60000元,与法有据。甲公司在一审庭审中未主张违约金过高,一审法院充分考虑各方面因素调低了约定的违约金标准,未公司的违约责任。3.案涉合同虽系双务合同,但无先后履行顺序,申公司在上诉理由中提及的先履行抗辩权。事实上,甲公司自UI确认后,酉公司披露小程序的开发进程,更没有按合同第2.1条的约定,甲公司开发负责人员每天在微信群中发布小程序开发进程。因此,戊公司戌公司未能完成相关开发,在相应的时间节点暂不付款,不构成延迟付款。亥公司最终交付的小程序不符合合同约定的开发要求,且拒绝更新维护,明显构成违约。
戊公司向一审法院起诉请求:1.甲23公司支付项目逾期开发款240470元;2.甲23公司乙24公司的损失30000元。丙25公司承担。
一审法院认定事实:戊公司丁26公司开发喜事易订小程序项目,双方于2019年2月28日签订合同一份,戊公司作为甲方、甲公司作为乙方。合同约定:乙方应按约定开发时间节点完成全部开发任务,按时上线,如逾期,每逾期一天扣合同标的总额1%的款项。自双方确认UI之日起70个自然日为开发阶段。本项目开发标的总额为193000元。甲方在本合同双方签署后3个工作日内支付乙方本项目标的总额30%即57900元为首付款,甲方按照乙方的开发时间节点付款,详见下表时间节点。如甲方时间节点验收中或乙方在本应完成的时间节点未完成相关开发,甲方有权在该付款节点的支付款项中扣除部分应付款,待问题解决确认后再行支付。甲方除首期付款和按开发时间节点付款外,留合同标的额的20%款项在合同期的第18月支付。
付款节点
付款比例(按项目总金额比例)
首付款
30%
原型
10%
UI
5%
开发阶段
30%
测试
5%
底款
20%
注:开发阶段付款方式为UI确认后每15个自然日付7.5%
2019年3月1日,戊公司甲公司支付合同首付款57900元。2019年3月4日,甲公司戊27公司发送了喜多多项目进度表的电子邮件,内容载明产品原型(产品元素、字段、模型)完成时间为2019年3月3日-3月8日、UI(设计稿)完成时间为2019年3月12日-3月25日并备注“UI确认后即进入开发阶段”、静态页面(小程序静态页面)、商家、商城、订单、服务器和内测模块的完成时间为3月26日-6月10日。2019年3月13日,戊公司、甲公司电子邮件确认了原型。
2019年3月21日,戊公司甲公司支付38600元。同日,甲公司己28公司发送电子邮件,庚29公司支付的第二笔款项,合同约定应支付15%,戊公司多支付5%,辛30公司可少打5%。同日,壬31公司发送了喜多多第一版设计的电子邮件。2019年3月23日,戊公司向吴伟伟发送关于UI设计稿的修改意见的电子邮件。2019年3月28日,壬31公司发送电子邮件,邮件内容:“目前在建立数据库表格,现对已创建表格情况进行汇总,请查收。”2019年4月23日,吴伟伟通过微信问戊公司案涉项目技术负责人施大炜:“你好大炜总,设计稿看的怎么样了?”施大炜回复:“刘总出差了。我看了下,应该没啥需要修改的了,也就那样了。”2019年4月24日,壬31公司发送电子邮件,邮件内容:“现在已经在开始写模块接口和总后台功能,周五开始写第一模块的页面。”2019年4月30日,壬31公司发送电子邮件,邮件内容:“1.设计稿已按照文件进行修改,目前页面代码编写已在进行中……”。2019年5月23日,戊公司刘某、癸32公司吴伟伟、周勤、李犟进行会谈,形成会议纪要,确认:“1.设计稿已算是确认(4月23日),虽然未在邮件中进行明确的回复确认;2.5月30日出测试版本,测试版本需没有明显的BUG;3.因商城模块已移除,故需扣除贰万元(20000.00元)开发费用;4.测试版本给出后,甲方测出BUG,乙方需及时评估修复BUG的时间,并给出相应的计划表。”
2019年5月31日,甲公司吴伟伟通过微信将测试版操作说明发送给戊公司施大炜。2019年6月2日,壬31公司发送电子邮件,邮件内容:“你好,现喜事易成小程序体验版已发布……”。2019年6月5日,壬31公司发送电子邮件,邮件内容为测试通知函,子33公司已完成小程序测试版的开发,丑34公司测试并修复,已按要求做到无明显BUG,寅35公司进入测试阶段工作。2019年6月6日至2019年6月12日,吴伟伟与施大炜一直通过微信沟通测试版存在的相关问题。其中2019年6月6日,施大炜通过微信向吴伟伟发送喜多多测试修改意见文档。2019年6月11日,施大炜通过微信向吴伟伟发送喜多多测试修改意见前端文档。2019年6月21日,戊公司甲公司发送电子邮件,卯36公司在合同履行过程中,未按计划进行开发,交付的小程序存在功能不完整,操作不流畅,及若干处BUG,产品不具备测试条件,还不能称之为测试版,辰37公司一次次推延提交完整测试版,故无法按照合同约定的付款节点进行付款。2019年7月9日,壬31公司发送电子邮件,邮件内容:“您好,7月9日晚,经与大玮总一起测试喜事易定小程序后,总结出如下几点问题,对于发现的问题乙方(甲公司)已安排人员进行完善,对于此甲方(戊公司)大玮总深表谢意,感谢帮助!问题总结:……。”2019年7月11日,壬31公司发送电子邮件,邮件内容:“您好!现我方已在约定的时间完成了上次面对面会议中提出的修改建议,巳38公司可正式进入喜事易定测试阶段。”2019年7月17日,壬31公司发送电子邮件,包含《0716前端整合.doc》和《0716后台整合.doc》两份文档,邮件内容:“您好,现已整理好7月16日的问题,并给出处理的时间,望查收。若有疑问可与我方进行沟通,谢谢。”次日,施大炜和吴伟伟在微信中对“商家设置”中“删除”、“更新”存在的问题进行了沟通。2019年7月19日,壬31公司发送电子邮件,邮件内容:“你好,7月17日整理出来的问题基本上已经改完(除文档上蓝色标注新增问题),剩余几个问题需要沟通后进行修改。现将已改完的进展文档发送给您,望查收审核,谢谢!”
2019年7月18日,甲公司戊公司发送催款函,寅35公司在收到函件后2日内支付欠款41900元。2019年7月21日,甲公司午39公司:“……给贵司带来的困扰,我们致以最诚挚的歉意,并正式撤回该催款函的全部内容……”。
2019年7月26日,戊公司刘某、施大炜、未40公司吴伟伟、周勤进行会谈,形成书面会议记录,确认:“1.双方就7月18日和7月21日各自函件表达的意见在充分沟通的前提下达成和解,乙方(甲公司)表示歉意,甲方(戊公司)表示接受。2.双方在合同执行时间超出上达成谅解,乙方(甲公司)愿为此支付5000元的成长费,甲方(戊公司)表示无异议,执行方法为甲方(戊公司)在支付下期付款中予以扣除。3.双方就如何做好后期服务进行沟通,乙方(甲公司)表示不受此事影响,认真执行合同约定,按时按质完成后期维护工作,同时也及时做好甲方(戊公司)测试中发现的各类问题。4.甲方(戊公司)表示最迟在7月29日前结清前期开发费用和内测费用,实际支付36900元,至此甲方(戊公司)已完成合同第一阶段80%款项的全部支付任务,乙方(甲公司)表示没有异议。”2019年7月29日,戊公司甲公司支付36900元。事后,双方工作人员就小程序相关问题进行多次沟通。2019年8月6日,戊公司向吴伟伟发送修改意见0806,申41公司“告知完成时间,不能再拖了”。同日,吴伟伟回复“明天全部统一修复好”。2019年8月13日,施大炜通过微信向吴伟伟表示“司仪类、套餐作品等信息无法调用,请检查”“全部空白”。2019年10月8日,吴伟伟通过微信向施大炜表示“……服务器迁移好了”,施大炜回复:“好的。还有,你这次修改好了,把小程序源码发我一份。”
2019年10月16日,戊公司作为甲方、甲公司作为乙方,签订《项目验收确认协议》,内容为:“按甲乙双方小程序合同要求,经确认,甲方委托乙方开发喜事易订小程序已2019年9月26日完成全部开发阶段的工作并已完成上线测试,甲方先前也完成了内测。现就喜事易订小程序完成开发确认及源代码移交订立如下协议……三、甲乙双方确认小程序开发阶段完成时间为2019年9月26日,甲方完成验收确认工作……”。
一审法院认为,戊公司甲公司签订的合同系双方真实意思表示一致的结果,不违反法律、行政法规的效力性强制性规定,合法有效。本案的争议焦点为:1.UI确认时间的认定;2.甲公司是否逾期完成开发任务。如逾期,应支付多少违约金。
关于争议焦点1,戊公司认为2019年3月21日支付的38600元系原型及UI确认款项,UI的确认日是2019年3月21日。2019年5月23日会议纪要中所提到的4月23日确认设计稿是指静态页面设计稿的确认而非UI的确认。甲公司则认为,戊公司支付的款项不是UI确认款项。2019年5月23日会议纪要明确UI设计稿的确认日为2019年4月23日。一审法院认为,案涉合同约定UI付款节点上付款比例为项目总金额的5%,只能说明UI这一节点的付款金额并没有约定UI付款节点的具体付款时间,意味着从UI设计到确认的过程中任意时间都可以付款,付款并不代表双方对UI进行了确认。相反,甲公司发送的项目进度表中关于UI模块的说明即为设计稿,而静态页面的模块说明为小程序静态页面非设计稿。而且合同附件3.2项目付款节点中3.UI(设计稿)5%,也体现出设计稿即为UI设计稿。况且,按照合同约定,UI须双方确认,故双方在2019年5月23日的会议纪要第一点“设计稿已算是确认(4月23日)”中对UI设计稿进行了确认。由此,一审法院认定UI确认日应为2019年4月23日。
关于争议焦点2,甲公司认为酉42公司小程序体验版或2019年6月5日发送测试通知函,说明已经完成了案涉小程序的技术开发。一审法院认为,双方签订的合同第一条第六点约定开发结果为通过内测和公测,符合项目架构要求,无重大BUG,能上线正常运营。根据通常理解,无论是“测试版”还是“体验版”,应当是指供测试的版本,该版本是不完善的,有可能存在功能缺陷,也有可能存在BUG。软件开发中,判断开发义务是否已经完成应以开发的软件是否符合合同约定为标准,戌43公司所交付的软件并非合格软件,即使是在合同约定的期限届满前交付,也是不符合订立合同的预期目的。而合同第五条的付款节点中所谓的开发阶段,只是对于付款节点的划分,并不能根据付款节点来确定整个小程序开发阶段的时间节点。2019年10月16日,戊公司、甲公司签订的《项目验收确认协议》中,双方确认小程序开发阶段完成时间为2019年9月26日,戊公司也完成验收确认工作。一审法院认定小程序的开发完成时间为2019年9月26日。案涉合同约定“自双方确认UI之日起70个自然日为开发阶段”,UI确认是在2019年4月23日,甲公司应在2019年7月2日前完成开发任务。亥44公司于2019年9月26日才完成开发任务,明显超过了合同约定的时间,对此应承担逾期交付的违约责任。甲公司的逾期开发,双方曾于2019年7月26日达成协议,甲45公司乙46公司执行超期予以谅解,甲公司则同意扣款5000元。由此可见,甲公司已承担2019年7月2日至2019年7月26日逾期交付违约责任,丙47公司不再追究7月26日之后的违约责任,甲公司还是应及时完成开发任务。丁48公司数次催促,甲公司直至2019年9月26日才完成,戊49公司应当承担2019年7月27日至2019年9月26日的逾期交付的违约责任。
关于违约金的数额。《中华人民共和国合同法》第一百一十四条第二款规定:“约定的违约金低于造成的损失的,当事人可以请求人民法院或者仲裁机构予以增加;约定的违约金过分高于造成的损失的,当事人可以请求人民法院或者仲裁机构予以适当减少。”《最高人民法院关于适用<中华人民共和国合同法>若干问题的解释(二)》第二十九条规定:“当事人主张约定的违约金过高请求予以适当减少的,人民法院应当以实际损失为基础,兼顾合同的履行情况、当事人的过错程度以及预期利益等综合因素,根据公平原则和诚实信用原则予以衡量,并作出裁决。当事人约定的违约金超过造成损失的百分之三十的,一般可以认定为合同法第一百一十四条第二款规定的‘过分高于造成的损失’。”违约条款的设置是促使双方全面依约履行合同,补偿守约方的损失、惩罚违约方违约行为的重要措施。本案中,纵观整个合同的履行情况,甲公司未能按照合同约定的时间完成开发,戊公司予以谅解的情况下又未能在短时间内完成开发,丁48公司多次催促后在两个月后才完成开发任务,己50公司错过了案涉小程序在2019秋季中国(上海)婚博会的上线展出。甲公司在案涉小程序开发阶段迟延交付且期限较长,其应当预见违约行为对案涉小程序的上线运营和维护造成的不利影响及可能造成的损失。甲公司庚51公司的合法权益,也是对市场经济中契约精神的破坏。但是,违约金是采取补偿性为主、惩罚性为辅的原则,戊公司未能就其实际损失进行举证,合同约定“逾期交付一天扣除合同标的额1%”的违约金标准也明显过高,辛52公司主张约定的违约金过高,要求法院予以调低。综合案涉合同的履行情况、当事人的过错程度、预期利益等综合因素,根据公平原则和诚实信用原则,一审法院依法午公司支付违约金60000元。因双方合同中的违约金条款即是对因违约产生的实际损失的预先约定,故违约金与损失赔偿不应同时获得支持。现在双方合同有明确约定违约金条款、戊公司亦未提供任何证据证明其损失的情况下,一审法院已酌定了违约金,壬53公司癸54公司赔偿损失30000元的诉请不予支持。
综上,一审法院判决:一、甲公司于判决发子55公司违约金60000元;二、丑56公司其他诉讼请求等。
二审中,当事人没有提交新证据。
本院经审理查明,一审法院查明的事实属实,本院予以确认。
本案二审争议焦点为:1.案涉小程序开发阶段完成时间如何确定;2.甲公司是否应当承担逾期交付的违约责任。
本院认为,案涉小程序开发阶段完成时间应认定为2019年9月26日,甲公司未能在合同约定的期限内完成开发任务,对此应承担逾期交付的违约责任。
关于争议焦点1,案涉合同第一条第六款约定,开发结果为通过内测和公测,符合项目架构要求,无重大BUG,能上线正常运营。从该约定内容可以看出,寅57公司是否完成开发义务应以其开发的软件是否符合合同约定为准,而不能以合同第五条付款节点来确定整个小程序开发阶段的完成时间。卯58公司于2019年5月31日通过微信将测试版操作说明发送给戊公司,并于2019年6月5日通过电子邮件发送测试通知函,但是双方工作人员在2019年6月6日至2019年6月12日期间一直通过微信沟通测试版存在的问题。辰59公司巳60公司发送电子邮件,卯36公司在合同履行过程中,未按计划进行开发,交付的小程序存在功能不完整,操作不流畅,及若干处BUG,产品不具备测试条件,还不能称之为测试版,辰37公司一次次推延提交完整测试版,故无法按照合同约定的付款节点进行付款。午61公司的该邮件内容可以看出,其并未对案涉小程序的开发阶段完成时间进行确认。因此,甲公司未62公司发送测试通知的时间为开发阶段完成时间,不符合合同约定,本院不予支持。而双方在2019年10月16日签订的《项目验收确认协议》中确认小程序开发阶段完成时间为2019年9月26日,故应当认定该时间节点为案涉小程序开发阶段完成时间。
关于争议焦点2,一审法院认定UI确认日为2019年4月23日,双方对此均无异议,本院予以确认。根据案涉合同约定,开发阶段为“自双方确认UI之日起70个自然日”,戊49公司应于2019年7月2日前完成开发任务。甲公司上诉提出其享有先履行抗辩权,但根据合同约定,申63公司在本应完成的时间节点未完成相关开发,戊公司有权在该付款节点的支付款项中扣除部分应付款,待问题解决确认后再行支付。辛52公司直至2019年9月26日才完成开发任务,已然构成违约,戊公司有权在该付款节点的支付款项中扣除部分应付款,酉64公司提出的其享有先履行抗辩权的主张不予支持。戌65公司在2亥66公司执行超期予以谅解,但其并未明确表示不再追究2019年7月26日之后的违约责任,戊49公司仍需承担2019年7月27日至2019年9月26日期间逾期交付的违约责任。一审法院综合案涉合同的履行情况、当事人的过错程度、预期利益等因素,根据公平原则和诚实信用原则,午公司戊公司支付违约金60000元,并无不当。
综上所述,甲公司的上诉请求不能成立,应予驳回;一审判决认定事实清楚,适用法律正确,应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项规定,判决如下:
驳回上诉,维持原判。
二审案件受理费1300元,丁公司负担。
本判决为终审判决。
审 判 长 周锦明
审 判 员 陈 卓
审 判 员 戴志霞
二〇二一年六月二十二日
法官助理 李晓晴
书 记 员 李 妍
本案法律依据
最高人民法院关于适用《中华人民共和国合同法》若干问题的解释(二) 第29条
中华人民共和国合同法 第114条2款
中华人民共和国民事诉讼法(2017修正) 第170条1款1项