全文
甲公司乙公司计算机软件开发合同纠纷二审民事判决书
上海市高级人民法院
民事判决书
(2018)沪民终495号
上诉人(原审原告、反诉被告):甲公司,住所地上海市长宁区。
法定代表人:路某,该公司总经理。
委托诉讼代理人:徐某,某律师事务所律师。
委托诉讼代理人:刘某,某律师事务所律师。
被上诉人(原审被告、反诉原告):乙公司,住所地上海市崇明区。
法定代表人:苗某,该公司执行董事。
委托诉讼代理人:聂某,某律师事务所律师。
委托诉讼代理人:黄某,某律师事务所律师。
丙公司(以下简称丙公司)丁公司(以下简称丁公司)计算机软件开发合同纠纷一案,不服上海知识产权法院(2017)沪73民初232号民事判决,向本院提起上诉。本院于2018年10月12日立案后,依法组成合议庭,于2018年12月19日、2019年3月21日公开开庭进行了审理。上诉人的法定代表人路某及其委托诉讼代理人刘某,被上诉人的法定代表人苗某及其委托诉讼代理人聂某到庭参加两次庭审,上诉人的委托诉讼代理人徐某,被上诉人的委托诉讼代理人黄某到庭参加第一次庭审。本案现已审理终结。
丙公司上诉请求:撤销一审判决第一、三、四、五项判决内容,并依法改判支持上诉人一审的全部诉请,驳回被上诉人一审的全部反诉请求,或依法将本案发回重审。事实和理由:1.一审法院认定被上诉人已经交付开发成果系事实认定错误,被上诉人无任何证据证明其已按合同要求交付过开发成果,违约事实清楚,已构成根本性违约。2.一审法院认定被上诉人的违约行为未造成上诉人机密泄露系认定事实错误。被上诉人不仅未按照合同约定在上诉人所在地进行项目开发工作,戊公司资料,己公司庚公司网络下进行测试,属于严重违约。3.由于被上辛公司的开发进度,壬公司的开发时间,癸公司造成巨大损失。此外,被上诉人未按照合同约定提供足够的工作人员在上诉人场所驻场开发,被上诉人应提供8位工作人员,但上诉人方某到2人,故上诉人认为其没有能力完成涉案软件开发工作,存在违约,且属于合同欺诈。关于某4判决第四项涉及的5万元人民币(以下币种同),是由于被上诉人的违约,上诉人判断其不可能完成合同约定的开发义务,故上诉人系行使不安抗辩权而未予支付。
丁公司辩称:一审判决认定事实清楚,适用法律正确,依法应当予以维持。其相应理由:1.被上诉人已于2016年5月3日交付涉案软件H5版本源代码并经上诉人验收,另于同年7月1日向上诉人交付涉案软件原生语言版本源代码,并于7月8日以邮件形式交付测试文件。关于交付方式,上诉人同意以U盘拷贝和其他方式交付。2.上诉人无证子公司信息的行为,因此被上诉人不存在违约行为。3.甲155公司并未明确约定被上诉人需要配备几人,且被上诉人已经履行全部义务。4.上诉人所述的5万元是合同约定的首付款组成部分,被上诉人未与上诉人就延缓支付达成共识,上诉人行使不安抗辩权的观点缺乏依据。
丙公司向一审法院提出本诉诉讼请求:1.丑公司丁公司签订的《甲公司客户(C端)APP和经纪人(A端)APP系统开发协议》(以下简称甲155公司)寅公司之日起解除;2.卯公司辰公司已支付的开发费用150,000元;3.卯公司巳公司违约金250,000元;4.卯公司支付机密信息泄露的违约金500,000元,午公司窃取的机密信息,即UI图以及有关UI的相关位置信息(图标、功能点的位置)。事实和理由:2016年3月15日,丙公司丁公司签订甲155公司,未公司在2016年5月1日前按合同确认的书面材料(需求、原型等)完成整个项目的开发、测试工作和缺陷修复完成,项目开发费用总计为500,000元。丁公司如逾期无法完成项目,丙公司可以单方面解除合同,丁公司申公司所有已支付的款项,还应按照合同总价款的50%承担违约金。同时,酉公司商业机密的考虑,甲155公司还约定项目开发戌公司所在地进行,亥公司无论主观或非故意造成“保密信息"泄露,丁公司甲23公司支付合同总价款100%的违约金,乙24公司造成的其他损失。甲155公司履行期间,丁公司开发进度缓慢,只是提供了一些静态页面,完全不具备与后台连接的功能,与合同约定的工作成果完全不符,直至2丙25公司交付任何成果,已远远超出合同约定的项目完成时间,严重影响了项目整体研发的进程,丁26公司造成了不可逆转的严重后果。更为严重的是,丁公司开发人员在明知戊27公司商业机密的情况下,违己28公司资料,同时将该资料放在自己的云空间上进行开发工作,造成了严重的机密信息泄露。丁公司的违约行为已构成根本性违约,丁26公司造成了重大损失,按照甲155公司约定,丙公司有权解除合同,庚29公司返还已收取的开发费用并赔偿违约金。
丁公司一审中针对本诉辩称:1.同意甲155公司于某3法院向丁公司送达起诉状副本之日即2016年9月10日解除,但合同解除后的法律责任由法院判定。2.甲155公司签订后,丁公司丙公司没有全额支付第1期开发费用的情况下,为了不延误整个项目的工作进度,一边催款,一边工作,辛30公司交付了可以上线的系争软件H5版本,壬31公司借故以不满意为由对开发成果不予认可,癸32公司,会有一些后续的业务,子33公司有其他合作,丑34公司又用原生语言开发了系争软件的另一个版本,寅35公司进行了交付。因此,丙公司庚29公司返还开发费用150,000元并赔偿违约金250,000元的诉讼请求,缺乏事实和法律依据。3.卯36公司的软件开发环境很差,丁公司的开发人员为了工作需要,将UI图上传至其云空间用于开发,该资料仍然在其控制范围内,不存在泄露,丙公司辰37公司泄露了该资料。综上,丁公司除同意解除甲155公司外,巳38公司的其余本诉诉讼请求。
丁公司向一审法院提出反诉诉讼请求:1.丑公司丁公司支付开发费用共计325,000元;2.丑公司丁公司支付逾期支付所有开发费用的违约金(以50,000元为基数,每周0.5%,从2016年3月19日起算至判决生效之日止,最多不超过合同总金额的20%;以300,000元为基数,每周0.5%,从2016年7月10日起算至判决生效之日止,最多不超过合同总金额的20%);3.丑公司丁公司午39公司违约造成研究开发工作量增加所产生的额外开发费用296,205元。事实和理由:甲155公司签订后,丁公司积极、全面履行合同义务,壬31公司却屡次违约,未40公司重大损失。丙公司的违约行为包括:1.逾期支付第1期开发费用。按照甲155公司约定,丙公司应在合同签订后5个工作日内支付合同总价款的40%即200,000元作为第1期合同款项,壬31公司仅支付了150,000元,剩余50,000元至今未支付,丙公司应支付该费用并承担逾期付款违约金。2.逾期支付第2期、第3期开发费用。丁公司申41公司交付了符合合同约定的开发成果,壬31公司对于UI设计不满意,要求按照其提供的UI设计方案重新进行开发,已经违反了合同约定。酉42公司出于善意,考虑到双方达成合作不易,仍然同意了重新开发的要求。2016年7月1日,丁公司丙公司交付了根据新的UI设计开发的成果,壬31公司至今仍然没有履行验收义务。按照甲155公司约定,丙公司未按约定验收或者超出戌43公司出具验收结果的,亥44公司验收合格,甲45公司应于2016年7月8日前支付第2期开发费用200,000元。乙46公司应在2个APP在AppleStore上线运行无误满30日后的5个工作日内支付,丙47公司丁48公司交付的开发成果,致使APP至今没有上线运行,丙公司的行为构成不正当阻止付款条件的成就,应视为条件已成就,丙公司戊49公司支付第3期开发费用75,000元。因此,丙公司应支付第2期、第3期开发费用并承担逾期付款违约金。3.拒不提供合同约定的开发条件和违约改变设计方案。丙公司己50公司的驻场开发人员提供必要的办公网络。此外,丙公司应提供的后台一直未开发完成,后台API接口经常修改,庚51公司APP前端的测试工作造成了极大的困难,合同履行过程中又多次更改设计方案甚至要求重新开发,辛52公司开发人员工作量201.5人/天。按照甲155公司附件二中的《报价清单》,折算单位人/天的开发费用为1,470元,故额外增加的开发费用296,205元,壬53公司承担。
丙公司一审中针对反诉辩称:1.丙公司第1期开发费用仅支付150,000元,癸54公司双方达成一致的结果,其不存在未全额支付第1期开发费用的违约行为。2.丁公司子55公司交付过一次开发成果,但该成果不符合合同约定,丁公司丑56公司支付第2期、第3期开发费用的条件并未成就,该费用不应该支付。3.丁公司对系争软件的开发均属于合同约定范围内的开发工作,丙公司寅57公司对项目进行了重新开发,对额外开发费用的发生亦不知情,丁公司卯58公司,丙公司对此不认可。综上,丙公司辰59公司的全部反诉诉讼请求。
一审法院认定事实:
一、甲155公司的签订情况
2016年3月15日,丙公司(甲方)丁公司(乙方)就“客户(C端)APP和经纪人(A端)APP"项目的开发签订甲155公司,该合同与本案有关的主要内容为:1.定义1.3“可交付成果物"是指本协议实施过程中按《工作说明书》的规定产生的新工作成果。1.5“保密信息"是指双方在讨论、订立及履行本协议过程中向另一方提供的全部技术和商业信息、本协议及其《工作说明书》的内容、开发成果及阶段性成果。1.11“工具"是指对于可交付成果物(程序产品除外)的开发、维护或实行所需要的软件和/或硬件。1.12“工作说明书"是指附于本协议后,用以说明某一特定项目的文件附件。《工作说明书》为本协议不可分割的组成部分,具有优先于协议正文的法律效力。2.协议结构2.1本协议作为基础开发协议,用于确定双方执行开发服务的基本条款和条件。具体开发项目的内容将以相关的《工作说明书》确定,该《工作说明书》与本协议将构成双方之间就具体开发项目所达成的完整协议。2.2通过援引本协议,甲方可以根据本协议直接与乙方签订相关的《工作说明书》,委托乙方提供特定的开发服务。3.开发内容甲乙双方将以《工作说明书》的方式确定乙方向甲方提供的开发服务和/或可交付成果物的具体内容(包括但不限于项目名称、开发内容、开发服务进度、开发场所、项目负责人)。4.交付及验收4.1验收标准和/或验收方式详见《工作说明书》。4.2乙方在项目开发过程中,乙方项目经理负责把所有开发人员每日更新的代码提交到甲方某2提供的SVN服务器,不得保留在自有服务器中,甲方每天负责对更新进行查验。4.3乙方保证在2016年5月1日前按甲乙双方确认的书面材料(需求、原型等)完成整个项目的开发、测试工作和缺陷修复完成。4.4甲方签收乙方提交的全部代码后5日内,验收包括所有家易后台系统接口接通,联机调试成功,功能、性能达标。4.5乙方在验收时需要出具的文档包括但不限于:《APP项目系统开发文档》《APP项目实施说明书》《系统测试计划》《测试报告》以及甲方要求提供的其他文件。4.6乙方完成APP建设工作并上传至测试主机相应的位置后,应及时通知甲方并通知甲方测试地址,通知方式双方约定为书面文档。甲方确认准确无误后,应以书面形式签收并开始验收。4.7验收过程中,甲方按照交付给乙方的项目需求文档分别对功能、UI页面、性能进行验收。如甲方认为不合格,乙方应根据甲方的意见继续修改。乙方接到甲方的修改意见后,需要在3个工作日内完成修改和测试,并将修改后的版本交付至甲方进行确认。4.8甲方未按约定验收或者超出规定的验收时间5个工作日不向乙方出具验收结果的,即视为甲方验收合格。4.9乙方将2个APP在规定的时间内同时交付给甲方,如果因为安卓或者苹果商店或者甲方的原因延迟,乙方不承担责任。5.双方权利义务5.1甲方权利义务5.1.1按照约定如期支付开发费用;5.1.2按照约定的期限向乙方确认其业务需求,提供技术开发文档、原始数据和测试手机设备,机型……5.1.3按期验收开发成果,对于符合验收标准的,按期接受可交付成果物;5.1.4本协议规定的其他权利义务。5.2乙方权利义务5.2.2乙方提供的可交付成果物应符合本协议规定的要求;5.2.3乙方在合同期限内需要自己提供测试手机设备,包括……5.2.5乙方应按本协议约定的开发进度按期完成各阶段的开发工作,交付符合验收标准的开发成果物;5.2.8提供开发所需的设备和开发工具。6.保密信息6.1乙方对甲方提供的技术资料承担保密义务。乙方不得将属于甲方的任何资料用于本协议之外的目的。6.2乙方应妥善保管甲方提供的各种资料。本协议履行完毕后或合同终止后3日内,除双方另有约定外,乙方应按甲方要求退还或销毁甲方提供的技术资料。6.6一方发现“保密信息"发生泄露等事故时,应立即告知对方,经双方协商后采取合理的对策。另外,由于一方的故意或过失造成“保密信息"泄露时,该方须向另一方支付合同总额100%的违约金,并承担由此给甲方造成的损失,且须及时采取必要的措施将对方损失控制在最小限度内,并自行承担因此发生的费用和责任。如果一方未及时采取必要措施而使损失扩大,则该方对对方扩大的损失亦应承担责任。7.服务变更7.1甲方如提出部分维护项目的变更建议,应当以书面形式提交给乙方。乙方应当在2个工作日内,对该变更后合同价格、服务内容、系统性能、技术参数等可能发生的变化作出预估,并书面回复甲方。7.2甲方在收到乙方回复后,应当在2个工作日内,以书面方式通知乙方是否接受乙方回复。如甲方接受乙方回复,则双方可对该变更以书面形式予以确认,并按变更后的约定继续履行本协议。7.3乙方如提出部分维护项目的变更建议,应当对该变更后人工报价、服务内容、系统性能、技术参数等可能发生的变化作出预估,并以书面形式提交给甲方,乙方应维持既有协议的人员单价。7.4甲方在收到乙方的变更建议后,应当在2个工作日内,以书面方式通知乙方是否接受乙方的变更建议。8.知识产权8.1甲方在《工作说明书》签订之前的已有知识产权仍归甲方某2有……。9.违约责任和处罚机制9.1除本协议另有约定外,由于乙方原因延期造成项目延迟的,延期一天乙方需要支付给甲方合同总价款的0.3%,延迟履行达到15天,即视为乙方违约,甲方可单方面解除开发合同,同时乙方应返还甲方某2有已支付的款项,还应按照合同总价款的50%承担违约金,如果违约金不足以赔偿甲方损失的,还应足额补偿甲方的实际损失;如果因为甲方原因延迟乙方不承担责任。9.2甲方未按时支付费用的,每迟延交付一周,应向乙方支付逾期未支付款项0.5%的违约金。甲方由此累计支付的违约金最高不超过合同总金额的20%。9.3由于乙方原因使软件无法上线,或乙方单方面终止协议,乙方除应返还甲方已经支付的所有费用外,还应按照合同总价款的50%承担违约金,如果违约金不足以赔偿甲方损失的,还应足额补偿甲方的实际损失。9.4如乙方未能尽到第8条、第4.3条规定之义务,视为乙方单方面终止协议,按第9.3条支付赔偿金。10.协议的生效、变更和终止10.2任何一方有正当理由要求变更本协议的,须提前5日以书面形式通知对方协商解决,协商一致后双方应签署变更协议。12.费用及支付12.1本项目开发费用总计500,000元。实际总费用按乙方完成实际工作量计算,具体见《报价清单》和增减工作量的工作联系单为准。12.2所有费用由甲方分4期以银行转账方式支付,具体见第12.4条,在第2、3、4期付款前,乙方需取得甲方出具的合格的《项目验收报告》;第12.1条所述费用包括乙方完成《工作说明书》所述任务的所有费用及应缴纳的税款。12.3在甲方支付当期款项前,乙方应向甲方开具合法有效的等额发票,否则甲方有权延期支付当期款项……。12.4支付时间及具体金额如下:第1期,支付时间为协议签订并收到发票后5个工作日内,支付数额为总费用的40%;第2期,支付时间为2个APP甲方验收通过并收到发票后5个工作日内,支付数额为总费用的40%;第3期,支付时间为2个APP在AppleStore上线运行无误满30日并收到发票后5个工作日内,支付数额为总费用的15%;第4期,支付时间为2个APP经甲方验收通过后,三个月运维期满并收到发票后5个工作日内,支付数额为总费用的5%。上述费用的支付方式均为银行转账。14.其他事项约定14.3本协议的所有附件均构成本协议的有效组成部分。本协议附件如下:14.3.1附件一《工作说明书》;14.3.2附件二《报价清单》;14.3.3附件三《项目组人员清单》。14.4任何一方未能或延迟行使其在本项下的权利,不某解释为对该权利的放弃。
甲155公司附件一《工作说明书》载明的主要内容为:本工作说明书根据甲乙双方于2016年3月15日签订的甲155公司的条款签订,并成为甲155公司的有效组成部分。1.巳60公司开发C端APP和A端APP。C端APP,简称CAPP,午61公司客户提供服务的手机APP,其中包括Android和iOS,2个主板版和11个兼容版本。A端APP,简称AAPP,午61公司经纪人提供服务的手机APP,其中包括Android和iOS,2个主板版和11个兼容版本。2.CAPP/AAPP支持机型和系统版本……。3.CAPP功能需求为充分利用手机便携智能特性,未62公司提供的服务,开发移动端应用CAPP,提供找房、找经纪人、跟踪交易进度一系列服务。CAPP的功能包括:找房、卖房、找经纪人、登录、经纪人、房源、贷款试算、税费试算、购买力评估、来电记录、消息记录、交易进度、单据验证、分享APP。具体需求详见甲方提供的《CAPP需求规格说明书》。4.AAPP功能需求为充分利用手机便携智能特性,方便经纪人使用手机实现Web端功能的需求,开发移动端应用AAPP,提供房源查看、联系人查看、抢单等一系列服务。AAPP的功能包括:登录、房源、联系人、抢单、行事历、预约法务、案件进度通知、消息记录、贷款试算、税费试算、虚拟账户、查看二维码、注销登出。具体需求详见甲方提供的《AAPP需求规格说明书》。5.乙方交付成果物5.1软件交付物:CAPPAndroid源代码一份,能适应第2条中Android的8款手机。CAPPiOS源代码一份,能适应第2条中iOS的5款手机。AAPPAndroid源代码一份,能适应第2条中Android的8款手机。AAPPiOS源代码一份,能适应第2条中iOS的5款手机。5.2文档交付物:《APP项目系统开发文档》《APP项目实施说明书》《系统测试计划》《测试报告》以及甲方要求提供的其他文件。6.开发进度需求调研阶段,项目开始后的第1周内完成;需求分析阶段,项目开始后的第1周至第2周内完成;架构搭建阶段,项目开始后的第1周至第2周内完成;2个APP开发阶段,项目开始后的第3周至第6周内完成;数据交互后台开发阶段,项目开始后的第3周至第6周内完成;程序内部测试阶段,项目开始后的第3周至第6周内完成;甲方整体验收阶段,项目开始后的第6周内完成;维护期,项目上线之后的3个月内。7.履行地点和方式7.1本项目的研究开发工作在甲方某2在地进行,乙方应按照第6条的开发进度按时向甲方提交合格的开发成果。同时在项目开发过程中,乙方的一名Java工程师需要在甲方某2在地驻场并帮助甲方开发CAPP和AAPP所使用的后台接口。8.验收标准和验收方式8.1验收标准:乙方在第2条中所提及的所有手机上完整实现《CAPP需求规格说明书》和《AAPP需求规格说明书》的所有功能。(1)乙方提供完整的CAPP和AAPP的开发源代码,其中各包括iOS和Android两个版本。(2)乙方提供的CAPP和AAPP开发源代码中的每一个类(Class)和每一个类中的每一个方法(Function)都需要包含代码注释。注释需要包括但不限于类或方法的用途。8.2验收方式:(1)甲方负责安排人员验收,由于甲方机型配置的原因,甲方会安排人员在乙方使用乙方的部分机型进行测试。(2)甲方每次验收合格后,需出具书面的《项目验收报告》,并以此作为每阶段付款的依据。
甲155公司附件二《报价清单》载明的主要内容为:AAPP开发需要的(工时/天)合计为153人/天,CAPP开发需要的(工时/天)合计为187人/天。甲155公司附件三《项目组人员清单》为空白。
二、甲155公司的履行等情况
(一)2016年3月25日,丙公司丁公司支付甲155公司约定的第1期开发费用中的150,000元。
(二)甲155公司履行过程中,丙公司、丁公司相关人员之间的往来电子邮件、微信聊天记录情况:
1.2016年3月24日,丁公司申63公司工作人员徐礼德发送微信“徐总以后可以安排下,在来之前把网络手机呀和一些必须用品都到位不?每次来都要很长时间找人来联网,找人要一些经常用的帐号密码、手机也经常找不到。"徐礼德回复“其实测试机在合同里是你们准备的。"“我周一给你一个。"苗某回复“我们还以为不某带东西过来这边呢,就是有时候有有时候没有,来的时候都不见了,那等你周一。"
2.2016年3月25日,徐礼德向苗某发送微信“查到钱了么?"苗某回复“收到了15万,另外5万一个星期内支付对吧?酉64公司讨论UI。"徐礼德回复“10号左右付。"
3.2016年3月30日,徐礼德向苗某发送微信“APP这个东西UI需求得跟我们确认了才能动啊"“而且开发必须在我们这里的啊"“AAPP的目的和C完全不一样。"苗某回复“UI你们怎么安排确认,我们等你确定UI合同以及方案?我们急了,之前你们都说好,所以就开始了,这个只是测试,你们后台还没做呢,我们都不知道该怎么做了。"
4.2016年4月8日,苗某向徐礼德发送微信“那个另外的5万安排打了吗?"徐礼德回复“安排最近打给你。"同年4月11日,苗某向徐礼德发送微信“徐老板,钱安排了吗?"徐礼德回复“我们看看Alex的成果吧"“老板要看看阶段性结果。"苗某回复“可以啊,安排明天看吧,今天快下班了,这个5万是第一次40%要支付的。"徐礼德回复“我们现在认为Alex不够认真,工作时间太短,我们对风险比较担心。"“戌65公司是违约行为。"苗某回复“他的工作成果你可以看的,但是这个5万是40%定金里面的,之前只是答应晚付的,我们会按时给你们前台的东西就好了,我们有自己的计划,你们的后台还没建好,很多东西需要你们沟通,不某直接测试,亥66公司专注的查的,甲67公司,乙68公司的。"“这并不是一个很难的APP对他老来说,他做的最多的目前是想优化你们的前端,做一个更漂亮的前端,但是现在看来你们确认的流程有些慢,所以接下来就会按照你们的文件做相应的编程,优化如果需要以后可以再弄。"徐礼德回复“可能没你们想得那么简单"“这是我们发现的问题。"苗某回复“那明天看结果吧,不会让你失望的,有问题跟我们沟通我会调节的,但是定金是定金呀,请理解哦。"徐礼德回复“老板说这事定了我们才会批这个钱"“我今天申请被打回来了。"苗某回复“定金是定金呀徐总……我们之前答应是可以晚付,没想到是这样……"徐礼德回复“当然会付,他现在担心的是Alex做不完"“还要出过程管理方案呢。"同年4月18日21:19,苗某向徐礼德发送主题为“CAPP和AAPP项目事宜"的电子邮件,内容为:“(1)项目进展根据今天周一的会议讨论结果,我公司将运用HYBRID开发这四个APP的前端,我们在本周五将提供HYBRID版本的四个APP(CAPP和AAPP的安卓和苹果)丙69公司,丁70公司满意并完成交付。(2)合同款项支付:根据合同约定,定金应该支付合同总金额的40%,即20万,但是到目前只收到款项15万,还差首款的5万未支付,而总定金20万发票已经在3月21日交给甲方,希望本周内能尽快付清。"
5.2016年4月29日12:32,徐礼德向苗某发送微信“今天来交付?"苗某回复“5月1日。"徐礼德回复“51放假的。"苗某回复“我们不敢做任何变动了,就按照合同执行了。"同日19:09,苗某又向徐礼德发送微信“那5月1日三点见?"徐礼德回复“我出门,3号吧。"苗某回复“那合同写1号没关系吗?"“那你可以给我写个邮件不?只是为了确认。因为你后台没做好,都连在他的后台和服务器了,我们已经准备好交付了。"徐礼德回复“可以。"
6.2016年5月3日21:48,苗某向徐礼德发送主题为“CAPP和AAPP项目事宜"的电子邮件,内容为:“很高兴今天我们戊71公司4个APP了,己72公司的电脑里,贵公司可以随后开始进入测试阶段,当然我们有发现有些小问题会在近期及时解决(庚73公司进行测试),与此同时,辛74公司在测试的时候发现有其他问题,我们随时跟进解决,壬75公司的本次合作机会。"同年5月4日11:34,徐礼德向苗某发送微信“什么时候交付?"苗某回复“已经在电脑了,我昨晚给你写邮件了。"徐礼德回复“约个时间做个正式的交付吧。"苗某回复“好,今天可以找个时间给你们看一下,如果我翻译和理解没出错的话,就可以了,今天我们会再次检查一下,我就怕我翻译出错,所以一直在检查。"同日15:17,徐礼德又向苗某发送微信“这个版本太差了"“字体没对齐,没有格式"“边距不同"“画圈找房也没了"“完全不某接受"“功能也不全"。苗某回复“他觉得这个比你们自己设计的好,有些功能今天放上去。"徐礼德回复“字体都是歪的"“你看看卖房两个字在什么位置"“根本就不在中间"“登录页面也没有"。苗某回复“都有的,等下让他给你弄吧。"“再调一会,等下哦。"徐礼德回复“APPUI就用和我们一模一样的。"苗某回复“好的,如果这是你们想要的,他想在你们的基础上做点惊喜的,结果这样了……"徐礼德回复“这个很明显他没用心。"同年5月6日,徐礼德向苗某发送微信“明天你要来一趟,我们得谈谈"“老板看了昨天交的东西,非常火大"“把手机摔了"“明天早上过来"。苗某回复“好的,10:30到。"
7.2016年5月11日12:03,苗某向徐礼德发送主题为“CAPP和AAPP项目事宜"的电子邮件,内容为:“昨天(2016年5月10日)得知贵司在验看我癸76公司设计的UI的APP版本后,贵司希望要做成你们文件APP的UI、格式,甚至字体大小都一样的APP确切消息及其计划,子77公司的UI将于今天2016年5月11日提供给我方,路总也希望展示的效果更时尚一些。丑78公司排期,我方根据实际情况调整计划,寅79公司后台还没有完成的实际情况,可能仍然会造成一些障碍,请贵司加快进度。我们配合贵司争取在5月17日完成更换。"同年5月20日13:11,苗某又向徐礼德发送电子邮件,内容为:“关于此次合作,卯80公司UI开始到目前为止,共六个工作日,我方技术负责人竭辰81公司的SVN服务器里了,鉴于贵司早在3月30日前应当支付的定金,至今尚未完全支付,也严重影响了项目的进展,所以我方希望等完全收到定金以后再次开始余下的开发和交付。望理解。"同日17:20,徐礼德通过电子邮件回复苗某“4个APP功能列表,张学敏和李某负责对他开发的东西进行检查,以目前的开发周期至少应该完成4个APP50%的功能开发量了,他俩签字我们就可以走流程付钱了。"
8.2016年5月23日,苗某向徐礼德发送微信“能把网络搞好吗?我真不知道为什么要这样防范……大家都是希望事情尽早结束,可以帮忙配合一下吗?我做的不漂亮,徐总也不好交代,所以帮忙说服一下,调节一下,好吗?"“在过程中希望徐总能帮点忙,巳82公司成功,我们能让你满意。"徐礼德回复“等会我去。"苗某回复“另外李琦也意识到开发过程中要用网络,我今天带过去的同事也认为是,真不是乱要求。"
9.2016年6月30日,苗某向徐礼德发送微信“我已经给Marvin说了,下周把AAPP的前端页面也给到你们,所以一直还在努力的做。"“可以下周一过去嘛?把AAPP一起带给你。"徐礼德回复“最晚明天下班前。"苗某回复“看看能不某一起把AAPP给你,做到明天下午3点,午83公司吧。"“如果提前做好,我提前过去,未84公司。"徐礼德回复“好"。
10.2016年7月8日18:07,苗某向徐礼德发送主题为“CAPP和AAPP项目事宜"的电子邮件,内容为:“就本次合作,截止到7月1日,已经按照如下邮件的计划申85公司指定的mini电脑上,其中安卓的两个APP也已经安装到钱凯经理提供的安卓手机上,酉86公司提供的苹果手机上。就5月3日已经向对方交付的4个APP的代码,经对方验看后,认为不好看,不满意,字体等没有对齐,并提出进一步需求,丑78公司要求,进行优化,戌87公司UI设计进行开发,我司在克服了对方服务器不稳定、后台不完全能满足需要、以及UI多次修改等困难,于7月1日再次提交交付。为了便于了解和使用已交付的软件,现分别提供7月1日和5月3日的交付验收文件,供对方参考使用。"电子邮件后附“HybirdXXXXXXXX.zip(2MB)"“NativeXXXXXXXX.zip(2MB)"两个附件。前一附件包含“4APP测试报告Hybird.pdf"“4APP系统测试计划Hybird.pdf"“4APP软件开发项目文档Hybird.pdf"“4APP项目实施说明书Hybird.pdf"四个文件;后一附件包含“4APP测试报告Native.pdf"“4APP系统测试计划Native.pdf"“4APP项目开发文档Native.pdf"“4APP项目实施说明书Native.pdf"四个文件。该电子邮件发送后,亥88公司的钱凯发送微信“甲89公司的邮箱里,应该通过你先看到吧,你转发给徐总,或者给相关的负责人。"“你看下有没有收到。"钱凯回复“我看了一下,应该没收到。"苗某回复“那我再发一封。"钱凯回复“这次收到了。"同年7月12日,苗某向钱凯发送微信“上次在你小米手机上安装的那个CAPP和AAPP你删掉了吗?"钱凯回复“删掉了,怎么"。
(三)乙90公司提交的视频光盘内容显示:2016年6月6日,丙公司丙91公司的开发人员Alex“你已经把我们的UI资料拷贝进你的香港服务器了对吗?"Alex回答“你们的图片么?没有在那个服务器"“我是使用一个分享工具"“就像云工具一样。"徐礼德询问“所以你将我们的图片复制到云端?"Alex回答“不是将图片复制到云端,是将图片信息复制到云,并不是图片,而是图片上的元素"“在我的香港服务器主要是后台,这个工具主要是图片信息"“我做前端的主要信息,我只要复制粘贴这些信息就可以帮助我完成前端代码。"徐礼德询问“图标呢?"Alex回答“前期我将图标复制走了,大约2周前"“前期他们内网分享给我一次。"
三、其他事实
(一)2016年9月10日,丁公司收到长宁法院寄送的丙公司起诉状副本。长宁法院2016年11月21日庭前会议笔录载明:1.丙公司庚51公司的反诉发表答辩意见时表示“最终6.30提交的最终版本无法使用,无法进行编译,无法与后台进行连接。前端的页面也存在很大的问题。"2.丙公司庚51公司提交的2016年7月8日18:07苗某向徐礼德发送的主题为“CAPP和AAPP项目事宜"的电子邮件发表质证意见时表示“我们没有进行回复,我们只收到mini电脑上的,其他均某收到。"
(二)本案一审审理中,丙公司向一审法院提交了标注创建/修改时间为2015年6月17日的《CAPP需求规格说明书》V1.0(共计111页)和《AAPP需求规格说明书》V1.0(共计167页),并丁92公司戊93公司了,之后有过不超过5次的小范围调整,最后修改完成的需求规格说明书系在2016年5、己94公司,系争软件的具体功能需求以上述两份需求规格说明书为依据。丁公司则表示,甲155公司履行过程中,丙公司一直在修改需求规格说明书,丁公司开发时只是一定程度参照了该需求规格说明书,并不某完全以该需求规格说明书为依据,系争软件功能需求应以上述甲155公司附件一《工作说明书》中第3条“CAPP功能需求"和第4条“AAPP功能需求"所约定的功能为准。
(三)一审法院组织双方当事人对丙公司的SVN记录进行现场勘验,庚51公司的涉案项目开发成果进行演示。情况如下:
1.丙公司为涉案项目所建的SVN记录中,存在如下文件或文件夹:(1)“宋强-A-APP需求规格说明书V1.0(2015-09-07).docx"(共计167页)和“宋强-C-APP需求规格说明书V1.0(2015-09-07).docx"(共计113页);(2)“AAPPH5"和“CAPPH5",上传时间均为2016年5月16日,庚95公司的张学敏;(3)“test520"和“test0520",上传时间均为2016年5月20日,辛96公司的开发人员Alex;(4)“enc"(最后上传时间为2016年5月26日)、“AAPP"(最后上传时间为2016年5月27日)、“CAPP"和“XXXXXXXX"(最后上传时间均为2016年5月28日)、“APP_IOS"(最后上传时间为2016年5月30日)、“test0607"(上传时间为2016年6月7日),“XXXXXXXX"(最后上传时间为2016年6月15日),壬97公司的开发人员Alex。
2.关于以哪个版本的源代码作为开发成果进行当庭演示,丁公司表示上述SVN记录中存在的相关文件夹并非其最终交付的开发成果,也无法进行演示,应癸98公司的源代码即其在审理中向一审法院提交的源代码进行演示。丙公司则表示,应以其SVN记录中存在的源代码进行开发成果的演示,子99公司2016年7月1日向其交付过源代码,丑100公司向一审法院提交的源代码进行演示。鉴于上述SVN记录中并无2016年7月1日上传源代码的记录,且无论以哪个版本的源代码演示系争软件功能是否实现,寅101公司的后台进行连接,卯102公司辰103公司的后台仅开发了40%,巳104公司现在的后台即为当时的后台,午105公司现在的后台进行连接后进行演示。因此,涉案项目开发成果的演示未能进行。
(四)丙公司在本案一审庭审中称:1.截至2016年5月3日,丙公司就涉案项目的后台仅开发了一半左右,未106公司提交的开发成果,其系通过对照需求规格说明书对其功能进行验证,前端和后台的联通工作并没有进行,也鉴于其当时后台只开发到一半,申107公司修改的时间,当时没有要求解除甲155公司。截至2016年7月1日,涉案项目后台的基本架构搭建完成。2.丁公司完成开发工作的时间应从2016年5月1日开始计算,大概6周左右。3.涉案项目其之后自行招聘人员进行开发,目前基本已经完成,但未上线。
一审法院认为,丙公司丁公司签订的甲155公司系当事人真实意思表示,合法有效,对双方当事人具有法律约束力,双方均应当按照合同约定全面履行自己的义务。根据双方当事人的诉辩意见,本案一审的主要争议焦点为:一、双方在合同履行过程中是否存在对方主张的违约行为;二、甲155公司解除后的责任承担。
关于第一项争议焦点,丙公司认为,丁公司的违约行为在于没有按照甲155公司约定交付开发成果,且泄露了相关保密信息。丁公司则认为,其已经完酉108公司交付了开发成果,不存在违约行为,戌109公司存在未按约全额支付第1期开发费用、未支付第2期、第3期开发费用以及拒不提供合同约定的开发条件、违约改变设计方案导致重新开发的违约行为。
亥110公司是否存在没有按照甲155公司约定交付开发成果的违约行为。一审法院认为,首先,甲111公司应于2016年5月1日前按双方确认的书面材料(需求、原型等)完成整个项目的开发、测试工作和缺陷修复,但根据双方的微信聊天记录显示,由于2016年5月1日放假,双方约定于2016年5月3日交付开发成果,未106公司乙112公司交付了开发成果。丙公司在本案审理中自认涉案项目的后台截至2016年5月3日仅开发了一半左右,未106公司提交的开发成果,仅通过对照需求规格说明书对其功能进行验证,并未进行前端和后台的联通工作,申107公司修改的时间,丙113公司完成开发工作的时间应从2016年5月1日开始计算,大概6周左右,丁114公司所称,涉案项目的完成时间亦应在2016年6月15日左右,并非甲155公司约定的2016年5月1日前。其次,按照甲155公司约定,需求规格说明书是系争软件开发的主要依据之一,丙公司表示需求规格说明书首次提交之后有过不超过5次的小范围调整,最后修改完成系在2016年5、6月份左右,而需求规格说明书的调整必然对系争软件的开发进度造成影响,且双方往来电子邮件中亦显示,丙公司系在2016年5月11日才将系戊115公司,丑34公司完成系争软件开发的时间亦应予以相应延长。再次,丙公司己116公司在2016年7月1日向其交付了开发成果,并认为按照甲155公司约定,丁公司应把所有庚117公司所提供的SVN服务器。但根据一审法院当庭勘验的丙公司SVN记录,辛118公司开发人员的上传记录,壬119公司工作人员的上传记录,丙公司在长宁法癸120公司2016年7月1日提交到其mini电脑上的CAPP和AAPP代码,并称最终版本“无法使用,无法进行编译,无法与后台进行连接。前端的页面也存在很大的问题。"故一审法院认定双方在甲155公司的履行过程中已经以实际履行行为变更了系争软件代码提交的合同约定,丁公司提交的现有证据已经可以子121公司交付了最后的开发成果。最后,按照甲155公司第4条约定,丙公司丑122公司提交的全部代码后5日内应进行验收,丁公司在验收时需要出具的文档包括《APP项目系统开发文档》《APP项目实施说明书》《系统测试计划》《测试报告》寅123公司要求提供的其他文件等。验收过程中,丙公司卯124公司的项目需求文档分别对功能、UI页面、性能进行验收。辰125公司认为不合格,丁公司巳126公司的意见继续修改。丙公司未按约定验收或者超出戌43公司出具验收结果的,亥44公司验收合格。本案中,丙公司午127公司提交到其mini电脑上的CAPP和AAPP代码,丁公司又于2016年7月8日未128公司出具了验收时需要出具的相关文档,甲45公司申129公司提交的开发成果进行验收。壬31公司未在合同约定的时间内履行验收义务,酉130公司出具验收结果。因此,丁公司主张按照甲155公司的上述约定,戌131公司已验收合格,具有合同和事实依据,一审法院予以采纳。综上,丙公司亥110公司存在没有按照甲155公司约定交付开发成果构成违约的主张不某成立,一审法院对此不予认定。丁公司的相关辩称意见,一审法院予以采纳。
亥110公司是否存在泄露涉案项目相关保密信息的违约行为。一审法院认为,甲155公司第6条关于“保密信息"的约定,系为了防止参与亥132公司的任何资料用于甲155公司之外的目的,在涉案项目开发过程中向其他第三方泄露“保密信息"。根据本案查明的事实,丁公司的开发人员的确将涉案项目UI设计资料中的图片信息、图标复制至其云空间进行开发工作,但其行为并非用于甲155公司之外的目的,丙公司亦未提供证据证明上述信息已向涉案双方以外的其他第三方泄露,甲133公司乙134公司的该项违约行为,一审法院不予认定。
亥110公司丙135公司的违约行为,一审法院认为:一、按照甲155公司第12条“费用及支付"约定,合同签订并收到发票后5个工作日内,丙公司戊49公司支付第1期开发费用,即合同金额的40%计200,000元,壬31公司实际支付的款项仅为150,000元。丙公司虽辩称双方曾对第1期开发费用仅需支付150,000元达成一致,但未提供证据予以证明,且双方的微信聊天记录、电子邮件内容显示,丁公司丁136公司催讨第1期开发费用中未支付的款项,丑34公司丙135公司的该项违约行为成立,一审法院予以认定。二、按照甲155公司第12条约定,第2期开发费用的支付时间为“2个APP甲方验收通过并收到发票后5个工作日内",第3期开发费用的支付时间为“2个APP在AppleStore上线运行无误满30日并收到发票后5个工作日内"。戊137公司提交的开发成果已视为验收合格,己138公司支付第2期开发费用的条件还包括“收到发票后5个工作日内",庚139公司辛140公司开具合法有效的等额发票,丙公司有权延期支付该期款项。壬141公司尚未开具第2期开发费用的发票,故甲155公司约定的第2期开发费用的支付条件并未成就。对于第3期开发费用,因系争软件并未提交AppleStore上线运行,该期款项的付款条件亦未成就。因此,丁公司癸142公司未按约支付第2期、第3期开发费用构成违约的主张不某成立。三、亥110公司丙135公司的其他违约行为。(一)关于拒不提供合同约定的开发条件的违约行为。双方的微信聊天记录显示,丁公司子143公司的网络环境、测试手机设备的提供,特别是涉案项目后台一直未开发完成等多次提出异议,丑144公司应提供的网络环境的具体要求并无约定,丁公司寅145公司提供的网络环境导致系争软件的开发无法进行,且按照甲155公司第5条约定,双方均有提供测试手机设备的义务,卯146公司辰147公司涉及网络环境和测试手机设备的违约行为,一审法院不予认定。丁公司辰147公司就涉案项目后台一直未开发完成的违约行为,由于在系争软件的开发、测试过程中,丁公司巳148公司开发的后台进行连接,才能验证前端的相关功能是否已经开发完成、是否可以正常使用,相关数据是否能够实现对接,故系争软件后台的开发必须与前端的开发相匹配,否则会对前端的开发和测试造成影响,但甲155公司履行过程中,丙公司开发的后台的确未全部完成,其在本案审理中亦自认截至2016年5月3日后台仅开发了一半左右,截至2016年7月1日后台基本架构搭建完成,丑34公司丙135公司的该项违约行为成立。(二)关于违约改变设计方案导致重新开发的违约行为。按照甲155公司的约定,丁公司巳126公司提供的需求规格说明书对系争软件进行开发,丁公司午149公司可以提出修改意见。丁公司于2016年5月3日交付开发成果后,丙公司对页面布局、字体、功能等提出异议,未150公司表示“他(申151公司的开发人员)想在你们的基础上做点惊喜的,结果这样了……"丁公司亦同意对开发成果进行修改。由于软件开发的特殊性,开发成果在正式交付之前,一般要经历交付、测试、修改、再交付、验收等过程,在此期间也不排除委托开发一方会对原有需求根据开发成果的完成情况进行相应调整,该调整不应属于重新开发。本案中,丙公司认可需求规格说明书进行过多次小范围调整,亦表示开发周期可以相应延长。丁公司主张其2016酉152公司需求变更导致的重新开发,但其提供的现有证据并不某证明其主张,戌153公司提出该重新开发事宜,亥154公司的该项违约行为,一审法院不予认定。
关于第二项争议焦点,一审法院认为,本案审理中,丙公司诉甲155公司之日起解除,丁公司对此予以同意,并表示合同解除的后果由法院处理,一审法院予以准许。鉴于某3法院于2016年9月10日向丁公司乙156公司的起诉状副本,故甲155公司自该日解除。
根据《中华人民共和国合同法》第九十七条规定,合同解除后,尚未履行的,终止履行;已经履行的,根据履行情况和合同性质,当事人可以要求恢复原状、采取其他补救措施,并有权要求赔偿损失。本案中,如一审法院在第一项争议焦点中所述,丁公司提交的开发成果已视为验收合格,丙157公司主张的没有按照甲155公司约定交付开发成果的违约行为,其也不存在泄露涉案项目相关保密信息的违约行为,甲45公司庚29公司返还已收取的开发费用150,000元并支付违约金250,000元,以及支付机密信息泄露的违约金500,000元的诉讼请求,一审法院不予支持。但根据甲155公司第6.2条约定,甲155公司终止后3日内,除双方另有约定外,丁公司丁158公司戊159公司提供的技术资料。甲155公司履行过程中,丙公司己160公司交付过UI设计资料,丙47公司庚161公司辰公司提供的UI图,符合合同约定,一审法院予以支持。丙公司庚29公司返还有关UI的相关位置信息(图标、功能点的位置)的诉讼请求,因其对主张返还的信息不某予以明确,故一审法院对于其该诉讼请求不予支持。
亥110公司丑56公司支付开发费用共计325,000元的反诉请求。辛162公司原因导致无法继续履行,虽然本案审理中双方就甲155公司自2016年9月10日解除达成一致,壬31公司仍应就其过错,壬163公司支付相应开发费用的方式,癸164公司的经济损失。壬141公司提交的开发成果已视为验收合格,与该履行阶段相对应的第2期开发费用200,子165公司未支付的50,000元,丙公司均应予以支付,丁公司的相关反诉请求,一审法院予以支持。丁公司主张的第3期开发费用75,000元,丑166公司的原因并未提交相关平台上线运行,故其行为可以视为阻碍了第3期开发费用付款条件的成就。但一审法院考虑到,如果系争软件正式提交上线运行,丁公司则需要在上线运行前以及上线运行过程中对其提交的软件可能产生的bug或其他问题进行进一步修复、完善。壬141公司尚未履行上述义务,鉴于甲155公司已经解除,丁公司也不需要再履行上述义务,卯146公司主张的第3期开发费用,一审法院酌情支持25,000元。
亥110公司丑56公司支付逾期支付所有开发费用违约金的反诉请求。《中华人民共和国合同法》第一百一十四条规定,当事人可以约定一方违约时应当根据违约情况向对方支付一定数额的违约金,也可以约定因违约产生的损失赔偿额的计算方法。甲155公司第9.2条约定,丙公司未按时支付费用的,每迟延交付一周,戊49公司支付逾期未支付款项0.5%的违约金;丙公司由此累计支付的违约金最高不超过合同总金额的20%即100,000元。本案中,寅167公司未支付的50,000元,应按照上述约定支付违约金。由于第1期开发费用的支付条件是合同签订并收到发票后5个工作日内,根据一审法院查明的相关电子邮件内容,卯168公司辰169公司,丙公司应于2016年3月28日前支付该期开发费用,故未支付50,000元的违约金应从2016年3月28日起算,巳170公司主张的2016年3月19日起算,午171公司未172公司以50,000元为基数,从2016年3月28日起计算至判决生效之日止,按每周0.5%计算的违约金,但该违约金的总额最高不应超过100,000元。丁公司辰147公司逾期支付其余开发费用的违约金,如前所述,丁公司癸142公司未按约支付第2期、第3期开发费用构成违约的主张不某成立,丑34公司关于该两期开发费用逾期付款违约金的反诉请求,一审法院不予支持。
亥110公司丑56公司申173公司违约造成研究开发工作量增加所产生的额外开发费用296,205元的反诉请求。按照甲155公司第12.1条约定,项目开发费用总计500,000元,酉174公司完成实际工作量计算,具体见《报价清单》和增减工作量的工作联系单为准。本案中,丁公司并未提供证据证明其在甲155公司履行过程中,就其主张的增加工作量以合同约定的“增减工作量的工作联系单"戌175公司提出,要求对其增加的工作量予以确定。丁公司提供的现有证据亦无法证明其2016酉152公司需求变更导致的重新开发,亥176公司提出该重新开发事宜,丑34公司的该项反诉请求,一审法院亦不予支持。
综上,一审法院判决:一、丙公司丁公司2016年3月15日签订的甲155公司自2016年9月10日解除;二、丁公司甲177公司乙178公司提供的UI图;三、丙公司丙179公司开发费用275,000元;四、丙公司丙179公司自2016年3月28日起计算至判决生效之日止、以50,000元为基数、按每周0.5%计算的逾期付款违约金,上述违约金的总额最高不超过100,000元;五、丁180公司的其余本诉诉讼请求;六、戊181公司的其余反诉诉讼请求。一审本诉案件受理费12,800元,丙公司负担;一审反诉案件受理费5,041元,丁公司负担2,778元,丙公司负担2,263元。
二审中,上诉人向本院提交如下证据:第一组,己182公司相关工作人员微信聊天记录及微信群聊天记录,用以证明被上诉人没有开发能力,开发人员人数不足,确实无法完成甲155公司开发任务,被上诉人演示的程序代码对上诉人完全无用,上诉人只能自行组建团队进行开发,故上诉人以律师函形式解除甲155公司。第二组,证人李某的劳动合同及其证人证言微信语音,用以证明被上诉人没有能力完成合同约定的开发任务,未按约定安排开发人员进行开发,被上诉人的APP开发与上诉人的后台开发进度没有关系,被上诉人根本未向上诉人交付源代码,上诉人为此只能重新招募技术人员自行开发。第三组,证人李某2的离职申请和证人证言,用以证明被上诉人没有能力完成合同约定的开发任务,未按约定安排开发人员进行开发,开发人员工作时间少,后台开发与前台开发相互独立,后台开发进度不影响前端功能开发完成,被上诉人的工作人员承认是图片做的假页面。第四组,龙军、高小冬、向治洪、马莲的劳动合同,用以证明上诉人因被上诉人违约,为减少损失,自行招聘技术人员组建团队开发。第五组,发文回执单、律师函,用以证明2016年7月1日,被上诉人已收到上诉人发出的解除合同律师函,双方甲155公司已经实际解除。根据合同约定的法律责任,上诉人要求被上诉人返还已收取的合同价款、支付违约金并赔偿损失。第六组,证人宁某审到庭所作证人证言,用以证明被上诉人未按照上诉人设置的技术要求进行开发,导致项目延期,被上诉人私自将技术方案更换为H5,严重影响用户体验,被上诉人人员投入不足,上诉人全力配合,因为被上诉人没有能力完成开发任务,上诉人只能重新招募技术人员自行开发。
对于上述证据,被上诉人质证认为:对于第一组的微信聊天记录的内容及聊天对象是否为本人不认可,对关联性和合法性有异议;对于第二组中微信语音聊天对象是否为李某本人不认可,对关联性和合法性有异议;对于第三组中证人证言是否为李某2本人所写不认可,对关联性和合法性有异议;对于第四组的真实性无异议,对关联性不予认可;对于第五组中的发文回执单的真实性予以认可,对律师函的真实性不予认可,对关联性和合法性均不认可;对于第六组证人证言的真实性、合法性及关联性均不予认可。
为反驳上诉人第五组证据,被上诉人提交其法定代表人苗某与上诉人工作人员徐礼德微信聊天记录,用以证明上诉人并未向被上诉人发送律师函,被上诉人在不知情的前提下,根据上诉人要求在发文回执单上签字,被上诉人对发文回执单后附材料内容并不知情,庚183公司人员要求查看相关内容遭到拒绝。上诉人对该证据质证认为,对真实性无异议,对证明目的有异议。
对于双方当事人于某提交的上述证据,本院认证认为:关于被上诉人提交的证据,鉴于上诉人对该证据的真实性予以认可,且该证据内容系涉案双方就甲155公司履行的往来聊天记录,并与被上诉人一审提交且为一审法院所认定的相关微信聊天记录可以相互印证,故本院对该份证据予以采信。关于上诉人提交的第一组证据,从其显示时间看均形成于上诉人一审起诉前,但其直至本案二审开庭方才提交,对此又未能提供合理解释。同时,从该组证据的内容看,辛184公司内部人员交流内容,且其中所涉的对甲155公司履行实际状况的意见并无被上诉人的相应确认,亦无其他直接证据予以佐证,即不足以证明上诉人相应证明目的。综上,本院对该组证据不予采纳。关于上诉人提交的第二、三组证据,该两组证据均系证人证言,但所涉证人均某出庭作证,且上诉人既未向本院提出该两位证人出庭作证的申请,亦未提供该两位证人不某出庭作证的合理理由,对其证言又无其他在案证据予以作证,壬185公司离职员工。综上,本院对该两组证据均不予采纳。关于第四组证据,所涉劳动合同系上诉人与案外人签订,并不足以据此证明被上诉人存在违约行为,即与本案并无直接关联性,故本院对该组证据不予采纳。关于第五组证据,其形成于上诉人一审起诉前,但其直至本案二审开庭方才提交,对此又未能提供合理解释。同时,被上诉人法定代表人虽于2016年7月1日签署了该证据中的发文回执单,但其一,根据其提交的微信聊天记录显示,上诉人工作人员徐礼德于同年6月28日回复苗某时否认要给后者发律师函,此与上诉人二审提交的前述第一组证据中徐礼德以及王磊于同年6月24日相关微信聊天记录内容相矛盾,上诉人对此又没有作出合理解释。其二,徐礼德于同年6月30日微信中要求苗某当日下午去上诉人公司一次,理由是根据这个星期的工作谈一下,苗某表示第二天下午过去,并一起把做好的AAPP给徐礼德,后者对此作出确认答复,且未涉及律师函事项,亦未涉及合同解除或催告内容。其三,同年7月1日晚,苗某通过微信要求徐礼德将当日苗某签字的材料拍照给其阅看,并表示其未仔细看该份材料是何内容。徐礼德仅答复为确认苗某已收到,要看要到周一,而再无其他进一步的明示或解释。此显然与一般当事人已送达催告或解除合同律师函的常理常情相悖,亦与上诉人二审提交的第一组证据中上诉人工作人员钱凯于同日微信所述内容相矛盾,且上诉人对此没有作出合理解释。综上,本院认为,上诉人该组证据不某证明其已将其所述律师函于2016年7月1日送达被上诉人或就该律师函之内容已向被上诉人予以明示,且亦无在案证据表明嗣后上诉人将该律师函通过其他方式送达被上诉人或交其阅看。此外,从上诉人提交的该律师函内容看,并不涉及解除甲155公司的直接意思表示,且所述内容与此前双方已经以实际履约行为变更了涉案软件代码交付相关合同约定的甲155公司实际履行情况不符,在无其他在案证据佐证的情形下,不某据此认定该律师函具有解除甲155公司的法律效果,即不足以证明上诉人之证明目的。因此,本院对上诉人该组证据不予采纳。关于第六组证据,证人宁某某出庭作证,癸186公司离职员工,且对于上诉人当庭对其询问的如“对方某2谓5月3号展示我们的东西是什么版本?"“李某2说的页面是假的?"“是否穆缘没有进行过任何的交付?"等问题,其答复为“当时自己没有看到。下属看到了,看到了不是原生版本"“确认。当时得到的回复如此"“没有员工向我反馈过正式交付"等,即宁哲非相关事实直接见证人。同时,其陈述的涉案软件开发和测试不需要后台的配合,与相关技术常识相悖,亦与上诉人在2016年11月21日长宁法院庭前会议中所作陈述相左。综上,该证人当庭所述不足采信,本院对该组证据不予采纳。
经审理查明,一审法院查明的事实属实,本院依法予以确认。
本院认为,本案二审争议焦点主要在于:被上诉人在履约过程中是否存在上诉人于某中所主张的违约行为。对此,本院围绕上诉人相应主张分别分析如下:
关于甲155公司于2016年7月1日解除,而非于同年9月10日长宁法院向被上诉人送达起诉状副本之日解除的主张。本院认为,上诉人作为提起本案诉讼的一审原告,于某2审诉请中明确请求判令甲155公司自起诉状送达被上诉人之日起解除,并得一审法院支持。现其于某中请求变更甲155公司解除日,该上诉请求业已超出本案二审审理范围,亦与其关于支持其一审全部诉请的上诉请求矛盾,故本院不予审理,亦不予准许。
关于被上诉人未按合同约定的交付方式交付开发成果的主张。本院认为,甲155公司4.6项虽约定了被上诉人在完成涉案APP开发工作后应将其上传至测试主机相应位置,但其一,该合同对该条款所述测试主机相应位置并未作明确约定,即对于交付方式有所约定但约定不明。其二,2016年5月3日,被上诉人在交付开发成果时向上诉子187公司电脑里,上诉人可随后开始进入测试阶段。对该交付方式,与被上诉人对接的上诉人工作人员未持异议。其三,上诉人在本案长宁法院2016年11月21日庭前会议中表示,其已经收到被上诉人2016年7月1日提交至其mini电脑上的源代码,并对此仅进一步表示无法使用,无法进行编译,无法与后台进行连接,前端页面也存在很大问题,而并未对交付方式提出异议。其四,被上诉人于2016年7月8日通过电子邮件附件向上诉人出具了验收所需相关文档,该节事实已于同月12日得上诉人工作人员确认,无在案证据表明当时上诉人对被上诉人交付方式提出疑问。综上,本院认为,在甲155公司履行期间,上诉人自始未对被上诉人交付开发成果的方式提出任何异议,故被上诉人交付甲155公司开发成果的行为和方式并未违反甲155公司的约定,上诉人相应上诉主张不某成立,本院不予认同。
丑188公司机密泄露的主张。本院认为,甲155公司约定,被上诉人应当妥善保管上诉人提供的各种资料,且不得将属于上诉人的任何资料用于甲155公司以外的目的。该合同还约定,一方发现“保密信息"发生泄漏等事故时,应立即告知对方,经双方协商后采取合理对策。另外,由于一方的故意或过失造成“保密信息"泄漏时,该方须向另一方支付违约金。对此,上诉人虽主张被上诉人造成其机密泄漏,但既未举证证明被上诉人将上诉人的相关资料用于甲155公司软件开发以外之目的,亦未提交证据说明本案中存在上诉人“保密信息"泄漏等事故。故一审法院对此相应认定并无不当,本院予以认同,并对上诉人相应主张不予认可。
关于被上诉人未按照合同约定提供足够工作人员在上诉人场所驻场开发的主张。上诉人认为,根据甲155公司附件二相关内容的计算可知,涉案软件开发至少需要每天8位被上诉人工作人员在上诉人场所驻场开发,而上诉人方某到2人。对此,本院认为,甲155公司附件二系涉案AAPP及CAPP报价清单,虽涉及不同开发角色及工时/天的数据,但从其文件名称并就计算机软件开发一般行业惯例来看,在合同没有其他特别约定的情形下,此为受托方与委托方明确报价并最终结算的依据,而非对于受托方开发人数的约束。本案中,甲155公司附件一的《工作说明书》第7条虽约定本项目的研发工作在上诉人方某2在地进行,但后续仅约定了被上诉人方某3Java工程师需要在上诉人所在地驻场,而无其他对于被上诉人驻场开发人数的约定。此外,甲155公司附件三的项目组人员清单为空白而双方仍予签约亦可对此予以佐证。综上,本院认定甲155公司并未对被上诉人驻场开发具体人数作出明确约定,故被上诉人亦不存在上诉人所主张的相应违约行为。
关于首期开发费用中的5万元系上诉人行使不安抗辩权的主张。本院认为,根据我国合同法的规定,应当先履行债务的当事人,有确切证据证明对方存在经营状况严重恶化;转移财产、抽逃资金,以逃避债务;丧失商业信誉或有丧失或者可能丧失履行债务能力的其他情形的,债务人可以中止履行。本案中,上诉人该主张所涉的5万元系双方甲155公司约定的首期开发费用的一部分,系上诉人先应履行的合同义务,其履行期限按约应在上诉人签订甲155公司并收到发票后的5个工作日内。上诉人虽主张其不支付该笔费用系对不安抗辩权的行使,但一方面,该笔款项履行期限应在2016年3月21日其收到相应发票后的5个工作日内,上诉人未提交任何证据证明被上诉人在该期间内存在前述履约不某的情形。相反,上诉人工作人员徐礼德明确表示上诉人将在2016年4月10日左右支付该笔款项。另一方面,即便上诉人承诺支付的期限届满后,其亦未提交任何确切证据以证明被上诉人存在前述丧失或可能丧失履行甲155公司能力的情形。相反,从在案证据看,被上诉人法定代表人苗某在此后多次向徐礼德主张该笔款项,徐礼德对此并未就被上诉人的履约能力向苗某提出质疑,反以保持沟通联系等实际行为就甲155公司继续予以履行。综上,本院认定上诉人在本案中对甲155公司首期开发费用的5万元并不享有不安抗辩权的行使权利,其相应主张不具有事实和法律依据,本院不予认同。
关于被上诉人交付的代码不符合合同约定,并据此请求进行技术鉴定的主张。本院认为,本案系计算机软件开发合同纠纷,一般情况下,受托方交付的开发成果是否符合双方合同约定事关该合同目的能否实现,故该问题确系此类纠纷的重要争点和审查点,又因其往往涉及专业技术问题,故在审理中通常需要采用委托技术鉴定或功能效果演示等查明方式。但在本案中,一方面,在上诉人于某3法院庭前会议中明确表示其已收到被上诉人2016年7月1日提交至其mini电脑上的源代码的情形下,其于本案一审当庭演示环节,在被上诉人表示应以该源代码作为演示对象后,又对前述在长宁法院庭前会议所作陈述作出反言而明确否认收到该源代码,最终致使演示程序未能进行。现上诉人于某期间再次作出反言,承认其收到该源代码,并又要求以该源代码作为鉴定对象进行技术鉴定。本院认为,上诉人的上述行为属于多次出现前后矛盾诉讼行为的情形,且明显旨在通过不当手段使自身处于有利的诉讼状态,有违民事诉讼法诚实信用的基本原则,其对此理应承担相应不利后果。另一方面,上诉人于本案二审中申请的鉴定方式系白盒测试,该种测试相较于着重检测软件功能的黑盒测试而言,系对软件程序源代码的检测而不顾及其功能,亦不进行前端和实际后台的联通。而本案中,上诉人于某4庭审中明确陈述对于被上诉人2016年5月3日交付的开发成果,需要对照涉案需求规格说明书对该成果的功能进行验证,该种验证亦需要前端和实际后台的联通。本院认为,上诉人一审中该陈述更符合技术常识和甲155公司目的实现之需要,即对于开发成果是否符合甲155公司约定的检测判断应基于其功能的实现情况,亦即按照涉案需求规格说明书的要求予以功能检测。同时,鉴于涉案开发成果属于软件前端,其检测亦应联通上诉人负责开发的后台。因上诉人无证据证明本案二审期间是否仍实际存在上诉人负责开发的后台或该后台状态是否与被上诉人2016年7月1日交付源代码时一致,故本案中实际不存在功能鉴定的事实基础。综上,并基于在上诉人工作人员明知被上诉人业已交付相关源代码及检测文档的情形下,上诉人在甲155公司约定期限内未予任何答复,一审法院认定被上诉人提交的开发成果视为上诉人业已验收合格,具有法律依据,本院依法予以认同,并对上诉人相应技术鉴定申请不予准许。
关于被上诉人未能提交开发成果拖延了涉案项目开发进度,癸公司造成巨大损失的主张。本院认为,首先,本案中并无在案证据直接证明被上诉人就涉案软件开发进度存在有意拖延的违约行为,相反,上诉人工作人员在合同履行期间已经确认收到被上诉人交付的验收文档,上诉人对该交付行为在履约期间未表示任何异议,故一审法院认定双方在履约过程中已经以实际履行行为变更了涉案软件代码提交的合同约定,具有事实和法律依据。其次,合同的顺利履行有赖于合同当事各方积极配合并各自全面履行自身义务。尤其就本案计算机软件开发合同而言,被上诉人作为受托方进行涉案软件客户端和经纪人端的前端开发工作,势必需要上诉人所负责的相应后台予以配合和保障,故后台的按期开发系甲155公司中上诉人所应尽的约定义务。同时,需求规格说明书作为甲155公司目的实现的判断依据,亦系甲155公司得以履行不可或缺的前提条件。但是,上诉人于本案一审中陈述,截至被上诉人首次交付开发成果时,后台仅开发到一半,且涉案需求规格说明书最后修改完成系在2016年5、6月间。因此,上诉人提出的被上诉人迟延履行的主张,缺乏事实依据,本院不予认同,并对一审判决相应认定予以支持。此外,上诉人也未提交任何证据证明其因甲155公司履行产生巨大损失。综上,本院对上诉人相应主张不予支持。
综上所述,甲公司的上诉请求不某成立,应予驳回;一审判决认定事实清楚,适用法律正确,应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项规定,判决如下:
驳回上诉,维持原判。
二审案件受理费人民币15,375元,甲公司负担。
本判决为终审判决。
审判长 马某
审判员 朱某
审判员 陶 冶
二〇二〇年一月二日
书记员 龚某
附:相关法律条文
《中华人民共和国民事诉讼法》
第一百七十条第二审人民法院对上诉案件,经过审理,按照下列情形,分别处理:
(一)原判决、裁定认定事实清楚,适用法律正确的,以判决、裁定方式驳回上诉,维持原判决、裁定;
……
本案法律依据
中华人民共和国合同法 第114条
中华人民共和国合同法 第97条
中华人民共和国民事诉讼法(2017修正) 第170条1款1项