中华人民共和国最高人民法院
民 事 判 决 书
(2021)最高法知民终219号
上诉人(原审原告):青岛融纳达商贸有限公司。住所地:山东省青岛市李沧区东川路59号(融源文化艺术街区34号楼)。
法定代表人:于淼,该公司董事长。
委托诉讼代理人:冯兆伟,山东兆基律师事务所律师。
委托诉讼代理人:丁倩倩,山东兆基律师事务所律师。
上诉人(原审被告):山东节点网络科技有限公司。住所地:山东省青岛市市南区银川西路20号2号楼3单元701户。
法定代表人:***,该公司执行董事。
上诉人(原审被告):***,男,1987年7月30日出生,汉族,住山东省青岛市四方区。
上诉人青岛融纳达商贸有限公司(以下简称融纳达公司)因与上诉人山东节点网络科技有限公司(以下简称节点公司)、***计算机软件开发合同纠纷一案,均不服山东省青岛市中级人民法院于2020年12月4日作出的(2020)鲁02知民初5号民事判决,分别向本院提起上诉。本院于2021年2月23日立案后,依法组成合议庭,并于2021年5月17日询问当事人,上诉人融纳达公司的委托诉讼代理人冯兆伟、丁倩倩,上诉人节点公司的法定代表人***到庭参加询问。本案现已审理终结。
融纳达公司上诉请求:1.撤销原审判决第二项,改判节点公司、***返还合同款项225000元;2.撤销原审判决第四项,改判节点公司、***支付违约金33750元;3.本案一审、二审案件受理费由节点公司、***承担。事实与理由:1.原审法院认定事实有误,“原告未能续费导致涉案小程序运行情况不能显示”不能作为《软件工程开发合同书》(合同编号:0532018061901,以下简称涉案合同)解除的原因,小程序交付的举证责任在节点公司,融纳达公司无需对合同解除承担责任。2.节点公司未按合同约定的开发周期进行开发,亦未按约进行交付,构成违约,无论合同是否予以解除,也无论合同解除的责任在于什么,均应根据合同约定支付违约金。
节点公司、***辩称:已全部履行涉案合同义务,因融纳达公司未对服务器续费导致本案举证产生困难,节点公司、***不应承担违约责任。
节点公司、***上诉请求:撤销原审判决,改判驳回融纳达公司全部诉讼请求;本案一审、二审诉讼费用由融纳达公司承担。事实与理由:原审判决认定节点公司的行为已构成违约,使融纳达公司不能实现合同目的属于事实认定错误。1.本案涉及的涉案小程序的基础总体功能,节点公司已经完成。2.融纳达公司提交的相关公证书无法证明公证日之前该程序无法使用,或功能未完善,且无法证明导致该情况发生的原因在于节点公司未完成交付验收,反而说明融纳达公司实际控制涉案软件。3.节点公司提交的培训相关微信聊天记录等可以证明已完成培训工作。4.2020年10月30日现场勘验证明了***2019年8月28日给于淼的短信内容,节点公司在项目交付之后融纳达公司修改了涉案阿里云登录密码,导致涉案程序不可用。5.节点公司提供证据中,微信“小程序数据助手”已经充分展示涉案小程序的投入使用记录,其各种阶段性相关数据,例如阶段性访问人数、访问总人数等能够充分证明涉案小程序并非在开发测试阶段,而是真正投入了使用,且节点公司提供的与融纳达公司朱沁雯的微信记录中“第一天打交通广播广告”形成呼应,证明涉案小程序已经投入使用。综上,涉案小程序无法使用的原因系融纳达公司未进行阿里云服务器续费造成,跟节点公司无关,节点公司完全按照涉案合同约定积极履行了全部义务,不存在任何违约行为。本案二审询问中,节点公司、***表示对原审判决解除合同不持异议,故上诉请求修改为撤销原审判决第二项、第三项。
融纳达公司辩称:节点公司未按合同要求完成涉案软件的全部开发任务,构成违约,且已完成部分未达到国家标准。
融纳达公司向原审法院提起诉讼,原审法院于2020年1月9日立案受理。融纳达公司起诉请求:1.解除融纳达公司与节点公司签订的涉案合同;2.节点公司返还融纳达公司向其支付的合同款项225000元;3.节点公司支付违约金33750元;4.一审诉讼费用由节点公司承担。
节点公司、***原审共同辩称:1.节点公司依约完成了小程序部署及升级,交付了合同约定的小程序及小程序后台操作平台;2.节点公司已将源代码交付给融纳达公司;3.尾款已经支付,说明融纳达公司认可开发成果并已实质验收;4.***不应承担连带责任。
原审法院认定事实如下:
2018年6月19日,融纳达公司(甲方)与节点公司(乙方)签订涉案合同,约定融纳达公司委托节点公司开发基于微信开放平台的多重分销商城系统,合同附件列明了功能列表及功能描述内容。合同第三条约定合同项目60个工作日完成,最终上线部署:2018年9月;其中第三条第4款约定软件系统需达到需求文档附件要求,且在调试完善、应用正常,双方确认后才能进行系统验收和文档移交工作;第四条约定合同总金额人民币225000元;第十一条约定验收的标准和方式为:乙方提交项目验收申请单,甲方组织相关人员结合系统功能进行签字验收,验收结果必须由甲方签字同意方可生效;第十二条约定违约金或者损失赔偿额的计算方法为:违约方赔偿履约方违约损失为合同金额的15%;第十五条约定,项目验收后,乙方向甲方提供项目源代码。合同对双方其他权利义务亦作了具体约定。
合同签订后,融纳达公司已全额支付合同款项。
融纳达公司于2019年11月20日向山东省青岛市市中公证处申办保全证据公证。同日,在该公证处公证人员的现场见证下,融纳达公司的证据保全代理人周丹使用其自带的且已经公证人员进行清洁性检查的iPhone手机及该公证处的网络进行了相关操作,公证人员使用公证处手机就周丹操作手机的过程进行了录像并制作光盘,将相应操作的屏幕截图打印。山东省青岛市市中公证处就上述过程制作了《工作记录》及附件,并于2019年12月2日出具(2019)鲁青岛市中证民字第7903号公证书。根据该公证书及附件所示,“聚纳达商城”小程序无法登录使用。
案件审理过程中,原审法院到融纳达公司处就涉案软件是否正常运行进行了现场勘验,勘验情况如下:通过手机验证“聚纳达商城”小程序,小程序可以打开,但没有动态信息展现;登录账号名“青岛融纳达商贸有限公司阿里云账号”显示:该账号于2018年8月15日注册,双认可系节点公司帮助注册,登录密码经过融纳达公司修改,账号最后一次续费时间是2019年7月31日,到期日是2020年8月18日,第一次续费至到期日,服务器资源没有间断。现服务器资源被收回,“青岛融纳达商贸有限公司”账号资源下已经没有被租用的云主机,导致小程序打开是空白。
另查明,合同履行过程中,双方通过微信及QQ邮件等形式进行沟通;涉案小程序代码于2018年8月22日首次通过微信平台审核,之后双方就出现的问题通过微信等形式进行沟通,节点公司又多次进行了部署审核,最后一次部署审核日期为2019年1月7日。节点公司主张2019年1月20日对融纳达公司员工朱沁雯进行最后一次培训;对于是否将源程序单独向融纳达公司以介质形式交付,节点公司表示记不清楚了。
根据双方的邮件及微信沟通记录显示,节点公司于2019年7月4日向融纳达公司发送了源代码,2019年7月5日融纳达公司法定代表人于淼要求***把公众号、小程序和阿里云的账号密码都发给其工作人员,2019年7月6日节点公司发送微信开发平台用户名密码。
微信“小程序数据助手”显示账户名称为“青岛聚纳达科技有限公司”的小程序访问量为1.9千人次,曾经用户数量869。
融纳达公司对小程序进行了上线部署没有异议,但称具体部署到什么程度不清楚,没有进行交付或者说明,只能算是在开发测试阶段,通过代码审核只能证明小程序符合微信平台要求能够上线,但不能证明小程序能够正常运行并符合合同约定。
节点公司未对涉案软件申请书面验收。
另查明,节点公司系自然人独资的有限责任公司,成立日期2015年11月30日,注册资本300万元,股东系***,经营范围包括软件开发、网页设计开发、系统数据集成、网络数据处理等。
节点公司以其无法自行调取为由,向原审法院申请调取以下证据,以核实案情并证实其完成代码部署及交付,完成合同义务:
节点公司申请原审法院向通联支付网络服务有限公司青岛分公司调取名为“青岛聚纳达科技有限公司”云商通业务在2019年至2020年11月期间产生的交易记录。
节点公司申请原审法院调取名称为“聚纳达商城”的微信小程序于2018年至2020年11月期间的版本更新记录、用户使用人数、用户支付交易记录及2019年1月7日最终发布的前端小程序代码;申请调取小程序所属微信开放平台内登录名qxf@qdjiedian.com在2019年6月至2019年9月期间登录密码修改记录。
节点公司申请原审法院调取阿里云服务器账号登录密码修改、找回记录,2018年8月至2020年10月云虚拟服务器ECS购买记录、是否停止服务记录、释放记录;2019年7月2020年11月期间阿里云官方发送的该账户下服务器到期充值释放的短信通知及手机号码;上述期间该账号下ECS虚拟服务器镜像操作、备份操作以及服务器快照操作记录。
原审法院认为:
首先,本案中,融纳达公司与节点公司签订的涉案合同系当事人真实意思表示,内容于法不悖,双方均应依约履行。合同签订后,融纳达公司已向节点公司全额支付合同约定的开发费用,节点公司应当合理使用开发费用,按照约定按期完成开发工作,交付开发成果,提供有关的技术资料和必要的技术指导。
本案根据节点公司提交的证据以及现场勘验情况,可以证明涉案小程序已经过微信平台审核,并部署在阿里云云主机上;但现场勘验显示因融纳达公司未能续费,导致服务器资源被收回,以致涉案小程序“聚纳达商城”打开后信息空白;对此,融纳达公司认为节点公司的交付不符合合同约定,而节点公司认为其已经交付验收,现不能运行系融纳达公司原因导致。
对此,原审法院认为:节点公司作为涉案软件开发方,应当承担按照约定方式交付开发成果的义务,根据涉案合同第十一条约定的验收标准和方式,乙方应提交项目验收申请单,甲方组织人员签字验收,验收结果需由甲方签字同意方可生效;因此,申请验收的义务在于节点公司,而节点公司在小程序审核部署后,并未及时提交验收申请,未能提交经过融纳达公司确认的验收单等证据证实涉案小程序符合合同约定,其提交的证据仅能证实其为履行合同进行了开发工作并进入上线部署阶段以及在开发过程中与融纳达公司进行了沟通,而部署上线测试是软件开发的必然阶段,不能作为按约交付的依据,故节点公司不能证明其按照合同约定向融纳达公司交付了开发成果;且小程序第一次部署后,双方就出现的问题又进行了沟通,节点公司之后也多次进行部署,最后一次部署日期为2019年1月7日;双方微信聊天记录可以看出,2019年7月5日融纳达公司仍在要求节点公司提供账号密码等,而该时间已远超出合同约定的开发周期,因此,节点公司所称其已按约完成合同义务的理由不能成立。因涉案合同系软件开发合同,具有较强时效性,节点公司至今未能按约交付通过验收的开发成果,致使融纳达公司已无法实现合同目的,故融纳达公司要求解除合同的请求原审法院予以支持。
其次,对于融纳达公司要求节点公司返还合同款项及支付违约金的请求,涉案合同虽因节点公司未能提交验收导致合同解除,但节点公司为履行合同付出了相应劳动并已进行上线部署,相关数据也显示小程序有用户数量和访问人数,虽该数据数量较少,且测试阶段也会产生相应数据,而是否符合合同约定的功能也难以证实,但可以证明小程序曾经可以进行访问,而融纳达公司未能续费导致涉案小程序运行情况不能显示,融纳达公司停止续费前也未及时与节点公司沟通,故其对合同解除也有一定责任。原审法院综合考虑涉案合同的性质、双方的履行情况以及节点公司付出的劳动等因素,根据诚实信用及公平原则,酌情判令双方各承担50%的责任,节点公司返还融纳达公司合同款项112500元(225000元*50%);对融纳达公司要求违约金的诉讼请求,亦不再予以支持。
对于节点公司要求原审法院调取证据的请求,原审法院认为,节点公司作为专业软件开发公司,应当按照合同约定及行业标准提请验收,在其未能履行该义务的情况下,要求法院调查取证于法无据,且其申请的调查事项也不能证明其交付的成果符合合同约定,故对其申请,原审法院不予准许。
***系节点公司的唯一股东,其未能举证证实公司财产独立于其个人财产,故融纳达公司主张其承担连带责任的请求,原审法院予以支持。
综上,原审法院判决:一、解除融纳达公司与节点公司签订的涉案合同;二、节点公司于判决生效之日起10日内返还融纳达公司合同款项112500元;三、***对上述款项承担连带赔偿责任;四、驳回融纳达公司的其他诉讼请求。如节点公司、***未按指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百五十三条之规定,加倍支付迟延履行期间的债务利息。一审案件受理费5181元,财产保全申请费1814元,共计6995元,由融纳达公司负担3497.5元,节点公司、***负担3497.5元。
原审法院查明的事实属实,本院予以确认。
本案二审期间,各方当事人均未提交新证据。
本院另查明:
1.山东省青岛市中级人民法院于2020年3月26日作出(2019)鲁02知民初196号聚纳达(青岛)科技有限公司(以下简称聚纳达公司)与节点公司、***计算机软件开发合同纠纷一案民事判决,后节点公司、***不服该案原审判决,向本院提起上诉,该案二审案号为(2020)最高法知民终1012号。聚纳达公司于2020年8月29日向本院申请延期审理该案,理由是其关联公司融纳达公司与节点公司之间另有关联案件五件,申请与该案一并审理。
2.山东省青岛市中级人民法院于2020年12月4日作出(2020)鲁02知民初2、3、4、5、6号融纳达公司与节点公司、***计算机软件开发合同纠纷五案民事判决(5号为本案一审)。该五案中,山东省青岛市中级人民法院均部分支持了融纳达公司的诉讼请求,判决解除涉案合同、节点公司返还融纳达公司已付涉案合同款项的50%、***对此承担连带责任。节点公司、***和融纳达公司均不服(2020)鲁02知民初2、3、4、5号民事判决,节点公司、***不服(2020)鲁02知民初6号民事判决,向本院提起上诉,(2020)鲁02知民初2、3、4、5、6号五案对应的二审案号分别为(2021)最高法知民终256、412、218、219、237号(219号为本案二审)。
3.本案起诉状副本送达节点公司的时间为2020年2月11日。
4.本案二审询问中,***认为其已经履行完毕涉案合同,即便要解除涉案合同,也不属于因其过错导致法定解除。
本院认为:本案二审主要争议焦点为,融纳达公司主张法定解除涉案合同的主张能否成立;若涉案合同解除,相应民事责任如何承担。
《中华人民共和国民法典》(以下简称民法典)于2021年1月1日起实施,根据《最高人民法院关于适用时间效力的若干规定》第一条第二款关于“民法典施行前的法律事实引起的民事纠纷案件,适用当时的法律、司法解释的规定,但是法律、司法解释另有规定的除外”之规定,因本案所涉计算机软件开发合同即涉案合同的订立、履行等相关法律事实发生于民法典施行前,故如无另有规定,本案仍应适用《中华人民共和国合同法》(以下简称合同法)的相关规定进行审理。
(一)融纳达公司有权主张法定解除涉案合同
根据合同法第九十四条第四项的规定,当事人一方迟延履行债务或者有其他违约行为致使不能实现合同目的,另一方当事人可以解除合同。合同订立以后,当事人一方不按照合同的约定履行合同义务,或者当事人一方履行合同义务不符合约定的,即是该当事人违约。违约的形式有很多,包括迟延履行债务、交付的货物不符合合同规定的质量要求、不按约定的地点履行等。当事人一方有违约行为并不必然导致另一方享有解除权,只有在一方违约致使不能实现合同目的等情况发生时,另一方才享有解除权。
本案中,根据涉案合同约定,节点公司为融纳达公司开发基于微信开放平台的多重分销商城系统,开发周期为60个工作日(涉案合同签订时间为2018年6月19日)。融纳达公司依约支付了合同款项225000元。但直至2019年7月5日融纳达公司仍还在要求节点公司交付公众号、小程序和阿里云的账号和密码。节点公司主张其已经完成涉案小程序开发,并提交小程序开发相关工作人员微信聊天记录、小程序代码微信审核通过截图、小程序访问记录截图、***2019年7月发送的附源代码压缩包的邮件截图、业务培训聊天记录等证据加以证明。但前述证据仅能证明节点公司开展了涉案小程序的部分开发任务,并不能达到其已经全部完成涉案小程序开发任务的证明目的。而根据涉案合同约定,涉案小程序的验收应先由节点公司提交项目验收申请单,对此,节点公司没有证据证明其曾提出验收申请及涉案小程序已经验收通过。鉴于涉案合同标的为小程序开发,时效性较强,节点公司未能在涉案合同约定的时限内履行全部合同义务,且直至超过涉案合同约定的开发周期半年左右后双方仍在沟通交付事宜,涉案合同履行期限拖延较长,涉案合同目的落空,故融纳达公司有权要求根据合同法的相关规定解除涉案合同。原审法院判决解除涉案合同并无不当,但未明确涉案合同的解除时间,本院依法予以明确。《最高人民法院关于适用时间效力的若干规定》第十条规定:“民法典施行前,当事人一方未通知对方而直接以提起诉讼方式依法主张解除合同的,适用民法典第五百六十五条第二款的规定。”《中华人民共和国民法典》第五百六十五条第二款规定:“当事人一方未通知对方,直接以提起诉讼或者申请仲裁的方式依法主张解除合同,人民法院或者仲裁机构确认该主张的,合同自起诉状副本或者仲裁申请书副本送达对方时解除。”本案中融纳达公司起诉请求解除涉案合同的起诉状副本送达节点公司的时间为2020年2月11日。故本院依法认定,2020年2月11日为涉案合同解除之日。
(二)涉案合同解除后的民事责任承担
合同法第九十七条规定:合同解除后,尚未履行的,终止履行;已经履行的,根据履行情况和合同性质,当事人可以要求恢复原状、采取其他补救措施,并有权要求赔偿损失。根据前述规定,本案中,涉案合同解除后,节点公司未完成的其他合同义务不再继续履行。关于合同解除后的其他事宜,首先,节点公司一审、二审提交的相关证据可以证明其已完成一定的涉案小程序开发任务,付出了一定劳动,对此应予适当考虑。其次,本院注意到,2019年7月5日融纳达公司也仍在与节点公司沟通协商合同履行事宜,表明双方仍在积极履行涉案合同。虽然涉案合同系因节点公司未能全面履行其合同义务导致合同目的未能实现,但是考虑到在计算机软件开发合同履行过程中,随着委托方需求的进一步明晰、合同双方交流的不断深入、受托方阶段性完成的具体情况、市场情势的客观变化乃至交易成本控制的考量,软件的成功开发客观上具有一定不确定性。因此,原审法院综合涉案合同的性质、涉案合同的履行过程、节点公司已经完成的工作情况等因素,酌情确定节点公司向融纳达公司返还合同款项112500元,并无不当。因此,对于融纳达公司上诉认为节点公司应当返还其全部已支付合同款项、节点公司和***上诉认为不应返还融纳达公司已支付合同款项的主张,本院均不予支持。关于违约金,原审法院在确定节点公司应当返还的合同款项时对于融纳达公司的损失已经综合考虑,故原审法院对于融纳达公司主张的违约金未再予以支持,并无不当。最后,关于***对于节点公司返还合同款项的责任应否承担连带赔偿责任,***在本案中主张涉案合同签订和前期履行期间,节点公司曾非一人有限责任公司。对此,本院认为:判断***是否需要对节点公司返还合同款项承担连带责任的关键在于节点公司与***是否存在人格混同。本案中,节点公司负有返还合同款项的债务确定时,***为节点公司一人股东,在***未能证明节点公司财产独立于其个人财产的情况下,原审法院判决***承担相应连带赔偿责任并无不当。
综上所述,融纳达公司、节点公司、***的上诉请求均不能成立,应予驳回;原审判决认定事实清楚,适用法律正确,应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项之规定,判决如下:
驳回上诉,维持原判。
二审案件受理费5775元,由青岛融纳达商贸有限公司负担3225元,由山东节点网络科技有限公司、***负担2550元。
本判决为终审判决。
审判长 张晓阳
审判员 傅 蕾
审判员 何 隽
二〇二一年六月二十三日
法官助理牛鸿生
书记员张华
裁判要点
案 号
(2021)最高法知民终219号
案 由
计算机软件开发合同纠纷
合 议 庭
审判长:张晓阳
审判员:傅蕾、何隽
法官助理:牛鸿生
书记员:张华
裁判日期
2021年6月23日
关 键 词
计算机软件开发合同;合同履行;合同解除;责任承担
当 事 人
上诉人(原审原告):青岛融纳达商贸有限公司;
上诉人(原审被告):山东节点网络科技有限公司;
上诉人(原审被告):***。
裁判结果
驳回上诉,维持原判。
原判决主文:一、解除原告青岛融纳达商贸有限公司与被告山东节点网络科技有限公司签订的《软件开发合同书》(合同编号:05322018061901);二、被告山东节点网络科技有限公司于本判决生效之日起10日内返还原告青岛融纳达商贸有限公司合同款项112500元;三、被告***对上述款项承担连带赔偿责任;四、驳回原告青岛融纳达商贸有限公司的其他诉讼请求。
涉案法条
《中华人民共和国民法典》第五百六十五条第二款;
《中华人民共和国合同法》第九十四条第四项、第九十七条;
《最高人民法院关于适用时间效力的若干规定》第一条第二款、第十条。
法律问题
计算机软件开发合同解除的认定;合同解除后的民事法律责任承担
裁判观点
合同订立以后,当事人一方不按照合同的约定履行合同义务,或者当事人一方履行合同义务不符合约定的,即是该当事人违约。违约的形式有很多,包括迟延履行债务、交付的货物不符合合同规定的质量要求、不按约定的地点履行等。当事人一方有违约行为并不必然导致另一方享有解除权,只有在一方违约致使不能实现合同目的等情况发生时,另一方才享有解除权。
注:本摘要并非裁判文书之组成部分,不具有法律效力。