广东省汕头市中级人民法院民 事 判 决 书（2020）粤05民终840号上诉人（原审被告、反诉原告）：汕头市云海网络科技有限公司，住所地汕头市龙湖区*************。法定代表人：纪某1。委托诉讼代理人：曾爱东，国信信扬（汕头）律师事务所律师。委托诉讼代理人：纪树彬，国信信扬（汕头）律师事务所实习律师。被上诉人（原审原告、反诉被告）：深圳市塑联供应链服务有限公司，住所地深圳市前海深港合作区************（入驻深圳市前海商务秘书有限公司）。法定代表人：徐某1。委托诉讼代理人：郑豪，广东沧桑律师事务所律师。上诉人汕头市云海网络科技有限公司（下称云海公司）因与被上诉人深圳市塑联供应链服务有限公司（下称塑联公司）委托合同纠纷一案，不服汕头市龙湖区人民法院（2019）粤0507民初2286号民事判决，向本院提起上诉。本院于2020年7月9日立案后，依法组成合议庭，于2020年8月6日公开开庭进行了审理。上诉人云海公司的法定代表人纪某1及其委托诉讼代理人曾爱东、纪树彬，被上诉人塑联公司的委托诉讼代理人郑豪到庭参加诉讼。本案现已审理终结。云海公司上诉请求：一、撤销汕头市龙湖区人民法院（2019）粤0507民初2286号民事判决第二项，依法改判为：1.塑联公司继续履行合同，并向云海公司支付合同剩余应付款项93000元及该欠款自应支付之日起至还清欠款之日止的逾期付款利息（以93000元为基数从2019年6月6日起至2019年8月20日，按同期银行贷款基准利率1.5倍计；从2019年8月21日起暂计至2020年4月20日，按全国银行间同业拆借中心公布的1年期贷款利率1.5倍计，暂计合计为5182.69元）；2.塑联公司赔偿因违约给云海公司造成的经济损失293108.6元；二、本案一审反诉、二审上诉的诉讼费由塑联公司承担。事实和理由：一审判决本诉部分认定事实清楚，适用法律正确，请二审法院予以维持，但对于反诉部分事实认定不清，适用法律错误，请二审依法改判。一、云海公司已交付的WEB版软件全部数据已测试通过并运行正常，但塑联公司单方恶意毁灭证据，不能据此认定云海公司未完全履行交付软件义务。从云海公司一审提交的证据9“平台删除视频及说明”可以看出：塑联公司在服务器还没到期时就已删除WEB版全部数据，导致证据灭失，过后才停用了服务器。云海公司认为，已交付的WEB版已经测试通过且具备良好的运行条件，塑联公司亦开始对外使用。发生争议后，塑联公司作为服务器和后台数据的实际管理人、控制人，不仅未巩固保全本案证据，反而为了逃避付款责任，恶意毁灭证据。一审法院未对云海公司已交付WEB版软件且通过测试、运行正常的法律事实予以认定存在错误，请二审予以纠正。二、云海公司已完成IOS软件开发并交付测试，未能部署至服务器运行使用完全系塑联公司不断增加新需求和拒绝配合测试所造成，应视为云海公司已完成软件开发义务，塑联公司应当向云海公司支付剩余款项93000元及相应利息。2019年3月11日，塑联公司通知云海公司正式启动IOS版软件开发。至2019年5月6日，云海公司提交IOS端供塑联公司测试，但塑联公司怠于履行合同义务，拖延一个多月仍不进行测试。因此，可视为云海公司已交付完成软件开发义务，而塑联公司放弃测试权利，即IOS端于2019年6月6日已符合上线运行条件。一审判决认为云海公司未能举证交付的软件已测试通过，塑联公司也不存在恶意促使条件不成就的证据，而驳回云海公司的反诉请求。一审法院认定事实明显有误，举证责任分配不清，判决错误。理由有三：其一，双方在签订合同时已对开发需求进行了确认，应作为本案合同履行的根本依据。塑联公司自始至终无法举证云海公司所交付的IOS版与双方确认UI具体项存在哪种不符，存在什么质量问题，而是完全凭主观认为“有问题”，或以其新的需求为标准认为UI存在问题，消极履行合同义务。这与其自称“专业公司、专业人员”的说法完全不符。其二，云海公司已按合同约定开发完成整个IOS版的架构（包括“登录注册、发布、积分商城、交易、启动页、求购买单、首页、搜索、塑联头条、我的信息、现货卖单、消息、资讯中心”），并提供给塑联公司测试。只不过由于塑联公司不断变更需求（该事实全部均可以在云海公司一审提交的证据7得到印证），并且在确认最终版后拒绝配合测试才导致本案争议，非常明显，系塑联公司的恶意阻却行为，才导致软件测试未通过、运行未能实现。因此，云海公司已经完成IOS版的全部开发，付出了相应的劳动，应该取得合同约定的相应报酬93000元。其三，《合同法》第四十五条：“当事人为自己的利益不正当地阻止条件成就的，视为条件已成就。”在本案双方已经确认开发需求的前提下，塑联公司不断变更、加入新的需求，客观上明显增加了云海公司的合同义务，无限延长了合同履行期限，导致原先预计的合同完成期限不断推迟，明显有悖于合同法公平原则。故2019年8月5日，云海公司在修改完成塑联公司最后的软件版本后停止接受新的需求。塑联公司既不进行测试，也不向云海公司提供苹果商城账户，属于恶意促使合同条件不成就，应视为付款条件成就，云海公司主张支付剩余款项具有合法性和正当性。一审判决认定事实错误，违背上述合同法原则造成本案交易条件严重不对等、不公平，损害云海公司合同利益。三、王世跃系本案合同开发项目中塑联公司的负责人，其行为构成表见代理，其作出的意思表示对塑联公司具有约束力。其一，本案项目自建立微信群后，塑联公司的代表人主要是：ALouer、娜儿、王世跃。ALouer、娜儿主要是商务流程细节的经办人，而王世跃则是这个项目的负责人。其二，整个合同履行期间，虽然塑联公司从未向云海公司提交过关于王世跃的授权委托书，但云海公司对于塑联公司提出的所有需求、修改、确认、沟通都主要通过王世跃提出，云海公司所作出的所有回应，都会“@娜儿、广东塑联供应链管理有限公司王世跃”进行沟通和作最后确认。以上事实，可以在云海公司在一审提交的证据得到印证。证据7-3.png显示：项目需求、大体架构和开发里程碑，需要跟王世跃对接确认。证据7-5.png显示：塑联公司的经办人ALouer:@包包王工，已将周六参加会议的王总拉进群，方便交流。证据11（包括王世跃向云海公司法定代表人发送的36秒微信语音）显示：王世跃在本案IOS项目确认完成后，承认造成整个项目迟延的原因是其公司管理存在重大问题导致，并表示同意向云海公司安排剩余合同价款付款的明确意思表示。证据11补充细化“深圳塑联供应链服务有限公司工商变更记录”显示：王世跃在本案合同履行期间也先后担任塑联公司的“监事、股东”等高管职务。其三，认定王世跃的行为代表塑联公司的意思表示，云海公司均属于善意且无过失。以上一系列的证据，均证明王世跃的行为符合《民法总则》第一百七十二条、《合同法》第四十九条以及《最高人民法院关于当前形势下审理民商事合同纠纷案件若干问题的指导意见》第四条（12-14项）关于表见代理的法律构成，依法应认定塑联公司已确认同意支付云海公司剩余合同价款93000元，塑联公司之后反言，严重违背诚信，应依法认定表见代理成立，判决塑联公司支付所欠合同价款。一审法院在此问题上未能正确适用法律，认定事实明显有误，二审应予以纠正。四、云海公司已尽举证责任，证明塑联公司违约给云海公司造成的损失在合同订立时可以预见，且损失客观存在，应改判支持。云海公司所主张的违约损失赔偿是依据本合同项目的报价单而计的，报价单价格构成包含开发人员的日劳务费单价和开发时间两个要素。从交易常理可知，合同双方进行交易，供方必然会给需方提交相应项目的报价单。本案报价单的内容又最终体现在双方签订的合同当中。因此，塑联公司是完全知悉云海公司开发本合同项目需耗费的成本构成的。塑联公司在合同履行期间不断变更需求，违反合同约定内容，增加云海公司的人力投入和工时投入，远远超过合同约定的成本，应当赔偿因其违约行为而给云海公司造成的损失，且该损失在合同订立时塑联公司是可预见的，也是客观、合理的。一审判决以云海公司主张的损失赔偿塑联公司在订立合同时无法预见为由驳回云海公司的反诉请求，不符合事实，判决错误。综上，一审法院判决反诉部分认定事实不清，且未能正确适用法律，从而导致对于反诉部分判决错误。云海公司请求二审查明事实，依法改判，支持云海公司全部上诉请求。塑联公司答辩称，一、本案纠纷的起源，就是云海公司在研发过程中，拖延时间、敷衍设计、无法完成研发项目，张口要钱不成，最后停止研发造成的。（一）云海公司拖延开发，敷衍设计、无法完成研发项目。塑联公司是基于对云海公司的信任，才委托云海公司开发商城软件，并预付了一半的开发款，期望云海公司在承诺的四个月内交付可以适用电子商城的应用系统。但是到四个月届满，云海公司的PC端WEB版错漏百出，不按照设计要求UR1.14设计消息提醒功能；网站用户剩余存货无法提货，不符合UR1.9.8；钻石会员的代理服务费显示错误，后台设置万分之五，前台显示为0，不符合UR1.5.4；网页显示错误，商品列表无产品，不符合UR1.3.5；买货后买单列表显示数量为0，网页输入数量显示为乱码，没做好UR1.3.5的买单录入功能等等17处错误。软件的IOS端还没有开始研发,2019年5月6日IOS端的APP是更是错的千奇百怪，下单只能输入整数，小数点后不能输入数字，没做好UR1.3.5的买单录入功能；没有消息推送功能，不符UR1.14.3；账号出现错乱，无法签章，没做好UR.1.3.7签章流程的功能；显示服务费上下不一致，上面是0元，下面是8600元，不符UR1.13.2，常识性错误；订单详情显示货物金额错误，不符UR1.13.2；合同甲乙方印章盖错，没做好UR.1.3.7签章流程的功能。仅微信反馈的就有40处错误，BUG系统中反馈的就更多。在云海公司提供的第16版APP，仍然有诸多错误，包括显示地址错误，交易后未提货物数据丢失，没做好UR1.8.2；确认收货单交易金额错误，显示负数，不符UR1.8.2和6.10邮件增加需求第7项，属于常识性错误；订单详情交易金额显示错误，不符UR1.13.2、1.6.4、1.6.5，属于常识性错误；平台服务费显示错误，不符6.10邮件增加需求第10项、常识性错误，后台VIP审核不了等，没做好UR3.5.2审核VIP用户功能。（二）错误频出的原因在云海公司。正常的软件开发公司，测试人员是开发人员的2至5倍，交给客户的是基本没有问题的软件版本。但是云海公司在项目中没有测试人员，所以所有软件都是由塑联公司测试。云海公司开发人员编写后，云海公司自己不内部测试，都交给塑联公司测试，所以出现漏洞百出的错误，塑联公司发现BUG错误，云海公司就修改一处错误，然后直接交给塑联公司另一个版本，让塑联公司再从头测试。一个版本测试一次，就要数日时间，要输入客户资料，模拟当日交易、次日交易，看模拟多日的延期委托交易，查看多日的手续费计算是否正确，查看多日的历史交易记录、历史订单详情。APP云海公司进行了16次的修改，每次都是修改了之前的错误，又冒出新的错误，大多是很低级的常识性错误，交易金额前后不一致、货物数量为0，无法显示订单详情，交易双方的印章颠倒。新版本能不能运行，修改错误会不会出现影响到其他的部分，云海公司完全没有把控，造成错误频频，弄得塑联公司精疲力竭。如果云海公司不偷工减料，能够设置内部测试人员，就不会发生这么多的错误。塑联公司的测试，是作为客户发现APP不符合塑联公司自身特殊要求的地方，而不是查找低级错误。因此，造成项目延误的根本原因就在云海公司没有进行内部测试。云海公司作为研发者，每个版本的APP都应当是一个崭新的完好产品，应当保障每个软件产品的质量合格、运行可靠。但是云海公司粗制滥造，敷衍了事，造成错误层出不穷。二、云海公司擅自停止项目，构成根本违约。（一）塑联公司要求云海公司提交正式上线并能够运行可靠的软件，但是云海公司在2019年8月5日就停止了项目。当时APP软件仍然有缺陷，而且也没有申请在苹果商城上架，所有测试都是线下测试，没有正式线上测试过。上线需要云海公司申请，因为塑联公司没有源代码，没法上线。云海公司说是塑联公司没有提供账号和密码，但是从云海公司提供的群聊记录，云海公司没有向塑联公司索要过密码和账号。云海公司辩解已经向塑联公司索要苹果商城的账号和密码，是塑联公司不给，云海公司作为义务履行方，应当对其辩解承担举证责任，否则应当承担不利后果。云海公司辩解已经完成APP的设计，但是在云海公司的BUG系统中塑联公司仍然提交了BUG要求修改，云海公司却在BUG系统中答复要求塑联公司支付全款，否则停止项目。塑联公司在庭审时多次要求云海公司提供BUG系统内容，云海公司也表示持有该份证据，但是一直没有提供。云海公司持有该证据却拒不提交，依据《证据规则》第75条应当认定该证据对塑联公司有利，塑联公司的陈述符合事实。正是由于云海公司无故停止研发，使项目陷于停顿，才导致了本案的纠纷。（二）由于云海公司没有提交项目成果、擅自停止项目，塑联公司不得不向云海公司发出催告函，限期履行合同义务。在2019年8月24日，塑联公司向云海公司发出《催告函》，云海公司当庭确认了《催告函》的真实性，但是辩解没有收到，《催告函》的地址是云海公司的法定地址，云海公司当然收到。根据邮政局的记录，云海公司已经于2019年8月26日收到。《催告函》中明确要求云海公司在10日内提交项目开发成果并完成部署上线。但是云海公司收到《催告函》后，仍然没有履行合同约定义务。已经构成根本违约。三、云海公司要求塑联公司支付研发费用，不符合合同约定。合同第二条约定，项目开发完成后，云海公司部署上线，经塑联公司测试通过，才支付第二次费用。付款条件根本不满足。项目没有开发完成，更没有进入苹果商城上线，谈不上测试验收。合同第一条约定开发项目包括PC端、IOS端、后台管理，这要求云海公司将项目作为一个整体研发，并交付塑联公司；第二条约定，“项目开发完成后”，云海公司部署上线并交付测试，而不是一个模块一个模块地交付塑联公司测试。PC端能够完整地反映后台信息，IOS端能够方便即时交易和查看信息，二者与后台管理互相搭配，才是一个完整的交易软件，才具有实用价值。PC端和IOS端口只要有一个出错，都会体现在后台，并反映在另一个端口上。一个端口的单独测试和交付，对于整个项目都没有意义，不算完成项目。因此，项目软件作为一个整体交付上线测试的，才是合同约定的测试形式；PC端和IOS端是同一个商城系统的两个端口，连接同一个后台，属于同一个整体，不可能分割。云海公司提出分割测试，就是错误的。云海公司要求先测试PC端的WEB版，再测试的IOS端的APP，是云海公司自己的研发步骤，不是双方约定的测试形式，不符合合同的要求。软件尚处于开发过程中，还没有到开发完成后的交付验收环节。合同约定的是线上测试，即APP在苹果商城上线测试，WEB版在互联网上测试，而不是在云海公司制造的环境中进行线下测试。云海公司研发的APP始终是在线下进行测试，云海公司还没有开始申请苹果商城上线的工作，远远没有达到合同要求的线上测试的条件。四、本案的本质是技术开发合同，云海公司需要交付符合合同要求的计算机软件成果。塑联公司委托云海公司开发的就是一套可以在苹果商城和互联网上包括计算机端（PC端）和手机端（IOS端)公开下载、方便安全交易软件。根据《最高人民法院关于审理技术合同纠纷案件适用法律若干问题的解释》第一条技术成果，是指利用科学技术知识、信息和经验作出的涉及产品、工艺、材料及其改进等的技术方案，包括专利、专利申请、技术秘密、计算机软件、集成电路布图设计、植物新品种等。本案中就属于计算机软件。本案开发软件要达到两个条件：（1）要符合合同及附件（一）的要求和双方2019年6月10日、2019年7月13日的邮件的要求；（2）要能够达到合同目的，可以在苹果商城和互联网公开下载，公众能够使用手机和计算机同塑联公司完成网上交易（即第二条约定的付款条件：正式上线，上线运行可靠，数据正确移植）。合同第一条约定开发项目包括PC端、IOS端、后台管理，这要求云海公司将项目作为一个整体研发。根据以上要求，塑联公司要求的软件是所有软件的使用者可以在PC端口和IOS端口输入数据，体现在同一个后台上；塑联公司能够在后台进行管理。PC端和IOS端口只要有一个出错，都会体现在后台，并反映在另一个端口上。一个端口的单独测试，对于整个项目都没有意义，不算完成项目。合同第二条约定的是，“项目开发完成后”，云海公司部署上线并交付测试，而不是一个模块一个模块地交付塑联公司测试。因此，项目软件作为一个整体交付上线测试，才是合同约定的交付形式。PC端的开发需要一个WEB版的软件，然后注册域名，将软件挂到域名上；IOS端则需要一个APP软件，然后申请在苹果商城上线，将软件放在苹果商城里。只有两个软件都能够公开交易运行可靠，才算是完成项目开发。软件的测试有三种：一是内部测试，即开发方专职程序测试员的内部测试；二是线下测试，即内部测试后，由委托方在开发方提供的测试环境中进行线下测试；三是线上测试，即在互联网上和在苹果商城上线后，进行测试。只有整体软件在线上测试通过，才完成研发项目，可以交付技术成果。五、塑联公司没有同意支付在2019年8月5日支付云海公司剩余研发款。按照合同约定，项目没有研发完成，APP没有申请上线，不符合支付第二笔研发款的条件。首先，王世跃没有答应要提前付款。在云海公司提供的2019年8月1日的语音聊天，说明付款的前提是“看软件有没有问题”，“没有问题的话”才能申请塑联公司付款。但是从微信群反映在2019年8月1-5日仍然有错误，包括交易后未提货物数据丢失、确认收货单交易金额显示负数、订单详情金额显示错误、平台服务费显示错误、后台VIP审核不了等，不符合付款条件。其次，王世跃之所以会同意2019年8月6日向塑联公司申请支付云海公司研发款，是因为云海公司承诺在2019年8月5日使项目顺利上线，但是云海公司并没有兑现承诺，甚至连软件存在的BUG都拒绝修改，以此要挟塑联公司付款。塑联公司依据合同约定不同意付款，并没有违约。再次，王世跃既不是塑联公司法定代表人，也没有授权负责项目。云海公司提出王世跃是项目负责人没有根据，王世跃不负责项目。双方应当按照既定合同条款履行合同。六、按照合同约定，云海公司应当退还已收的8.3万元费用。合同第六条第10点约定若因云海公司原因产生延误等情况造成塑联公司损失的，云海公司须退还塑联公司已付的费用。塑联公司向一审法院起诉请求：1.判令解除塑联公司、云海公司签订的《深圳市塑联供应链服务有限公司商城开发合同》；2.判令云海公司返还塑联公司已付费用83000元；3.判令云海公司赔偿塑联公司经济损失722136.96元；4.本案的诉讼费用由云海公司承担。云海公司提出反诉请求：1.判令塑联公司继续履行合同，并向云海公司支付剩余欠款93000元及该欠款的逾期付款利息（暂自2019年6月6日计至2019年11月15日，逾期罚息为2730.71元）；2.判令塑联公司赔偿因其违约而给云海公司造成的经济损失293108.6元；3．判令塑联公司承担本案全部诉讼费用。一审法院认定事实：2018年9月5日，塑联公司与云海公司签订《深圳市塑联供应链服务有限公司商城开发合同》，约定：塑联公司委托云海公司策划、开发应用管理系统，分为六个模块，分别为：1.总体设计6000元，2.IOS客户端60000元，3.WEB版40000元，4.数据接口20000元，5.后台管理40000元，6.维护费（不包含服务器、域名费）首年免费，第二年起16600元/年，项目总价合计166000元；塑联公司在合同签订一周内支付83000元，项目开发完成、云海公司部署上线并经塑联公司测试通过三日内支付49800元，塑联公司测试周期时限不得超过一个月，若超过一个月需提供“不通过说明”发送至云海公司邮箱，如测试通过需以邮件形式发送“项目通过确认书”到云海公司邮箱，双方约定以确认邮件日期为测试通过日期；正式上线后两周内塑联公司签章《上线确认书》确认运行可靠、数据正确移植后支付33200元，塑联公司上线时间如果超过测试通过实现的一个月（含）则需在一个月内提前支付合同剩余尾款；如支付尾款时间超过测试通过时限的一个月（含）或塑联公司上线周期超过与云海公司约定的一年（含）免费维护期，云海公司有权利停止对项目的跟进工作；工期为云海公司在收到首期50%合同款83000元后四个月内完成，详情见项目里程碑（附件二）；交货地点为塑联公司办公室；交货方式为测试期间云海公司提供更新包发布到测试网站，塑联公司可以访问到测试网站进行测试；如塑联公司在合同签订之日起两年内多支付合同款40%可获得源代码。2018年9月6日，塑联公司支付83000元。2019年6月10日，塑联公司同意云海公司按估算工时10000元进行修改。合同履行过程中，云海公司自2018年12月17日起进行了至少18次WEB版本错误（bug）修订，提交了至少16个IOS版本更新给塑联公司。后双方因合同履行发生争议诉至法院。一审法院认为，塑联公司与云海公司签订《深圳市塑联供应链服务有限公司商城开发合同》，系当事人自愿协商签订的，且不违反法律、行政法规的效力性强制性规定，依法成立并生效。双方应按约定行使权利、履行义务。因审判人员非计算机技术专业人员，故对本案事实认定主要依据当事人充分举证、说明。塑联公司请求判令解除合同、返还已付费用，系主张因云海公司违约致合同目的不能实现的法定解除，应对其主张承担举证责任，针对塑联公司提出的云海公司违约行为，根据合同约定具体内容认定是否违约至足以致使合同目的不能实现的程度。当事人一方有违约行为并不必然导致另一方享有解除权，只有在一方违约致使不能实现合同目的时，另一方才享有解除权。但塑联公司未提交足够证明力的证据证明云海公司违反合同具体约定的行为符合法定合同解除要件，理由在于：一、塑联公司未提交足够证明力的证据证明云海公司设计软件未交付致根本违约。1.塑联公司主张云海公司“不交付设计软件”，但合同约定的交付方式为“测试期间云海公司提供更新包发布到测试网站，塑联公司可以访问到测试网站进行测试”，现塑联公司提交的证据证明云海公司至少已经提交了16个IOS版本更新给塑联公司，且塑联公司也已到测试网站进行测试，不足以证明云海公司未完成合同约定的交付。没有交付合格产品和没有交付产品是两个不同的概念，合同的履行要紧扣合同约定内容，根据上述条款约定内容，塑联公司对产品质量不满意不能等同于云海公司未履行交付义务致根本违约。2.云海公司作为设计者掌握合同源代码，体现的是设计者知识产权，塑联公司接受交付的是软件使用权，是否开放源代码与是否许可使用软件不完全等同，塑联公司主张没有取得源代码即不取得本合同约定的交付与合同约定的许可使用软件即使用权交付不符。合同约定的如塑联公司“在合同签订之日起两年内多支付合同款40%可获得源代码”系源代码附条件取得条款，而本案争议的标的虽然与技术开发成果本身质量有关联，但本质是适格的软件的使用权，没有启动所附条件也并非因技术开发成果、技术开发行为本身引起的纠纷，不应将软件在本案中体现为源代码的知识产权混同于塑联公司主张的使用权，将知识产权是否交付混淆于软件使用权是否交付。3.塑联公司提交的证据证明云海公司至少已经提交了16个IOS版本更新给塑联公司，并进行了多次bug修正，说明云海公司依据合同付出了劳动，应得到相应劳动报酬。即使认定合同无效，也应根据过错程度承担相应责任，塑联公司主张完全不支付任何费用，不足以否定云海公司取得劳动报酬的合理性。二、塑联公司未提交足够证明力的证据证明云海公司违反合同约定履行期限致根本违约。1.塑联公司在本案中主张云海公司“超期交付网上商城应用系统”、“云海公司本应当在收到首期款四个月内，即2019年1月5日前，完成项目开发”，但于2019年6月10日又同意云海公司按估算工时10000元进行修改并提出修改要求，塑联公司虽当庭主张该意思表示仅是增加10日的工作期限，但该意思表示做出的时间是距塑联公司诉称的合同完成期限时隔5个月后，且做出意思表示时没有提出超期履行等违约主张、没有提出具体增加工作期限的起始时间，云海公司在此邮件中也没有自认违约、同意在违约基础上履行合同的意思表示，因此将在此时间点同意云海公司增加10日个工作期限认定为2019年1月5日起增加10个工作日不符合双方交流时的真实一致意思表示。该事实即使未能明确认定增加工作日的起始，但至少说明塑联公司同意云海公司继续履行合同、双方通过后续的行为变更了合同的履行期限，塑联公司主张云海公司在交付时间上以2019年1月5日为准认定根本违约与其自身后续行为不一致。2.按照塑联公司提交的bug修正表，可以看出塑联公司自2018年起已经不断就产品进行测试，并提出测试意见，至2019年诉讼前，双方一直在就软件运行情况进行测试和修正bug，该履行情况已与合同约定的期限表述不一致：按合同约定“项目开发完成、云海公司部署上线并经塑联公司测试通过三日内支付49800元”，塑联公司该“测试”是在云海公司“部署上线”之后，现塑联公司主张云海公司未部署上线，但却一直在测试并提出bug，该实际情况与合同约定的不符至少说明双方并未严格按合同约定履行，因而测试是否通过的“塑联公司测试周期时限不得超过一个月，若超过一个月需提供‘不通过说明’发送至云海公司邮箱，如测试通过需以邮件形式发送‘项目通过确认书’到云海公司邮箱”的认定方式，也没有实际履行，且该约定并没有限定是“每次”测试时限或者“总计”测试时限，但可以看出实践中塑联公司提出bug累计58次的测试“周期”已超过一个月，该约定发送“不通过说明”并未实际履行，实际上采取了边开发边测试边修正的履行方式。3.双方约定“工期为云海公司在收到首期50%合同款83000元后四个月内完成，详情见项目里程碑（附件二）”，但塑联公司未提交附件二，致“详见”情况未能对照说明。三、塑联公司未提交足够证明力的证据证明存在bug导致软件无法使用、合同目的无法实现的根本违约。1.没有bug的软件系统是一个完美适用的系统，说明不存在任何瑕疵，极少软件开发者能够一次性做出不存在任何bug的产品，即便如微软、腾讯之类的行业巨头，其软件也通过补丁不断更新修正。软件产品瑕疵不等同于根本违约，出现bug并不断修正是软件开发行为的基本特征，不能仅凭此否定开发者劳动，认定开发者存在根本违约，不能仅以是否有bug存在作为认定软件是否符合质量标准。2.相反，正是因为双方都认可存在bug，双方才会约定进行测试，并做出十多版的修正。据塑联公司所述，每次提出bug修正，云海公司是提供一个新的版本，因此云海公司为塑联公司至少修正了15个版本存在的bug问题，及多次web版本bug问题，而就目前版本存在的bug看，塑联公司列出其存在的问题说明有软件运行错误，但并不足以证明软件完全奔溃不能运行，反而体现软件整体上功能形式完备，云海公司辩称该错误系可以修复的履行瑕疵且已经修复，而之前多版本的错误在16版中塑联公司并未提出，说明云海公司至少已经修复了前述版本中的多处错误，现云海公司抗辩称16版错误亦已修复，而塑联公司未提交证据证明软件使用的具体现状，不符合证明至根本违约程度的证明要求。3.软件交易平台不运行既有可能由于云海公司的设计问题也可能由于塑联公司出于对交易平台安全、稳定、准确性的不信任而不运行，不能以平台实际运行与否认定是否存在根本违约，而应根据合同双方约定内容对照是否完成约定事项，但现塑联公司并未明确说明违反某项具体约定技术、功能标准，而是陈述未能通过其测试：既然约定了技术标准就要证明不符合技术要求而不能仅凭塑联公司单方测试、主观上是否认可作为认定软件是否符合标准的依据；而对塑联公司提出的需求与合同约定的需求是否一致、塑联公司测试方式与其提出需求的关系、测试方式是否能准确用于核准需求，测试、需求与合同约定技术标准的关系，塑联公司没有具体详细的运用合同约定和技术标准说明，而是采用另一评判维度的表述，从非技术的角度陈述运行瑕疵。塑联公司该行为与其作为拟专业承办电子商务交易平台的民事主体注意义务不完全匹配。4.本案交易软件需基于服务器数据运行，服务器由塑联公司租赁，塑联公司控制服务器的使用，实际上对软件是否运行有主要控制权。即使存在合格软件，没有服务器数据支撑，软件也无法运行，塑联公司虽主张是因云海公司违约导致合同无法履行，但塑联公司没有续租服务器是软件目前没有运行的原因，也是现软件无测试运行情况的原因；服务器暂停使用前，在条件许可的情况下，作为直接租赁使用者的塑联公司也未将服务器数据予以保存而任由数据到期灭失，现双方对包括服务器数据在内的履行情况有争议，塑联公司作为更接近该证据一方，为证明其主张的履行瑕疵成立，应对其暂停使用服务器致软件使用情况无法证明、核实的行为承担相应责任。对塑联公司申请的bug系统调查取证，基于：（1）调查取证内容主张来自bug系统但无具体内容而是“全部内容”，而本案显然有部分bug已被修复，塑联公司不应不加区分笼统主张；（2）本案合同并没有关于bug系统的约定；（3）塑联公司申请调查的是“交流内容”，而交流内容并不必然等于实际履行情况；（4）bug存在是本案已经认定的事实，法院没有否定塑联公司对存在bug的陈述；（5）bug的性质对合同履行的影响法院已经上述分析；（6）该调查取证没有写明直接证明目的，而是“为了便于法庭查明事实”，因此综合上述分析可以认定该调查取证相关证据关联性和证明力不足，不足以支持塑联公司主张。四、合同对云海公司的义务约定了总体设计、IOS客户端、WEB版、数据接口、后台管理、维护等六个部分，塑联公司主张其中的IOS客户端、WEB版存在瑕疵，虽然是主要部分，但仅是合同的一部分，其余部分的履行对判断云海公司是否履约也是重要依据。现塑联公司提交的证据，没有具体说明其他每一部分的具体履行、违约情况，不足以充分说明云海公司在六部分中的具体违约行为对合同履行目的的影响程度。五、塑联公司主张的云海公司违约所致单方解除均是在其自行理解情况下的单方解除行为，而要行使单方解除权，必须符合法定解除要件。在解除合同的条件成就时，解除权人如果选择解除合同，就应当通知对方当事人，使对方当事人清楚地知道解除权人行使了解除权。然塑联公司主张的解除文件《催告函》写明：“在十日内提交项目开发成果并完成部署上线，否则我司将解除与你司的合同”，其中“否则….”等表述实质上是一个附条件解除的表述，在该条件成就时应通知对方。同时，塑联公司主张的《催告函》邮政记录妥投时间为2019年8月26日，而云海公司于2019年11月25日向法院提出反诉异议，符合《中华人民共和国合同法》关于对单方解除有异议的，可以请求人民法院或者仲裁机构确认解除合同的效力的规定，不超过《最高人民法院关于适用〈中华人民共和国合同法〉若干问题的解释（二）》规定的三个月异议期限，主张异议行为成立。因此塑联公司既未能证明条件成就，也未能证明在条件成就后再次通知对方，其履行合同解除的行为有瑕疵，应对其在此基础上实施的单方中止合同行为产生的违约风险承担责任。因此，可以认定塑联公司提交的证据不足以证明其主张的云海公司违约行为导致合同主要义务没有完成至根本违约的程度并适格行使了合同解除权。对于已经交付产品的效果，塑联公司在本诉中对产品不合格承担举证责任，云海公司在反诉中对产品合格承担举证责任。对云海公司提出合同已经完全履行、要求塑联公司继续支付欠款的诉讼请求，因云海公司未能证明已交付按照合同约定制作完成的软件，法院亦不予支持，理由在于：一、根据合同约定，应当经过塑联公司测试通过后软件才算正式完工。既然云海公司与塑联公司约定了该认定条件，就应当按照既定条件完成工作，在塑联公司未测试通过且没有证据证明塑联公司恶意促使条件不成就的情况下，没有足够证明力的证据直接认定软件工作已全部完成。二、云海公司要主张全部合同款项，就应当证明合同义务全部完成，但云海公司提交的证据不足以证明其合同义务已达到全部完成的程度。没有交付合格产品和没有交付产品是两个不同的概念，塑联公司已经拿到至少16版的产品说明已经交付测试，不表示云海公司已经交付了合格的产品。云海公司作为软件开发者，应当举证相应运行证据证明软件具备基本功能，再由塑联公司在此功能上测试bug修正，现云海公司主张因塑联公司停止服务器致软件无法运行，虽是客观存在的原因，但没有证据证明塑联公司存在恶意促使测试条件不成就的行为，不能因此否定云海公司的举证责任。三、根据软件开发的工作特性，可以认为软件制作是一项在基本功能基础上不断修正bug的工作。云海公司多次为软件修正，既说明云海公司持续履行合同，也说明云海公司履行瑕疵，对该瑕疵程度，塑联公司虽没有提交足够证明力的证据证明属根本违约，云海公司也未提交足够证明力的证据证明瑕疵对主要功能影响程度。四、云海公司提交与塑联公司工作人员的对话记录，但未提交证据证明该工作人员系塑联公司适格授权人，不足以认定该工作人员认可软件完成的意思表示即为塑联公司的意思表示。综上，可以认定本案软件制作完成程度及交付情况这一争议的法律事实不明，对该法律事实，塑联公司主张软件未制作完成、未交付，应承担相应举证责任，云海公司主张软件已制作完、已交付，应承担相应举证责任，但双方均未能提交足够证明力的证据否定对方观点、证明自身观点，因此法院对塑联公司主张云海公司退还已收款的诉讼请求及云海公司提出塑联公司继续支付货款的反诉诉讼请求均不予支持。当事人一方不履行合同义务或者履行合同义务不符合约定给对方造成损失的，损失赔偿额应当相当于因违约所造成的损失，包括合同履行后可以获得的利益，不得超过违反合同一方订立合同时预见到或者应当预见到的因违反合同可能造成的损失。现塑联公司、云海公司主张的损失均不符合上述法定要求，法院均不予支持。理由在于：一、塑联公司主张的损失722136.96元中，50万元系主张向完成与本案基本相同标的内容的合同的第三方支付的对价，对该对价：1.从对价性质上看，该对价与本案合同约定的项目总价166000元差额数倍，对此差额塑联公司主张为“实现塑联公司的设立目的和兑现对行业客户的承诺，塑联公司不得不聘请其他网络公司重新开始软件设计”，系因时间紧短期内要求软件可以使用而致费用增加，但原合同虽然约定软件设计履行期，却未将塑联公司设立目的、对客户承诺及平台上线时限明确约定为合同目的，该些限制并未在原合同中体现，不属于云海公司在签订合同时可以预见到的损失；2.从内容上看，两份合同条款上并不完全相同，本案合同双方约定了六个模块，而塑联公司与第三方合同约定的标的仅写明“在线交易与结算电商服务平台系统”，就字面上看，反而本案合同约定更详细、内容更丰富，因此不能据此认定确认系完成完全相同的同一标的；3.从逻辑上看：（1）塑联公司与第三方支付更高对价的合同，却与履行内容丰富的塑联公司支付更低对价，此矛盾反而从一定角度佐证本案合同要价的一般合理性，塑联公司未解释此矛盾；（2）即使合同履行质量不如第三方，也可能是劳动报酬与劳动效果比例对应的正常体现，塑联公司未提交新合同履行结果的证据，未能证明第三方工作时间、工作质量等履行情况，不足以排除可能存在因与第三方合同标的与本案合同不同、质量要求与本案合同不同、工作量不同等因素导致合同标的额差额较大的情况，塑联公司未充分说明第三方合同履行情况；因此，综合上述分析，可以认定对差额的合理性、必要性，塑联公司未提交足够证明力的证据证明，对与第三方的合同履行未提交及时、足额付款50万元及该付款与合同与本案关联性的证明，不足以证明其证据清单所写的“额外支付50万元的费用”，其陈述不足以令人信服，不足以证明新合同与原合同的关系，不足以证明新合同系为弥补原合同履行瑕疵而必须采取的方式，该主张于法无据。二、按照合同约定，软件测试是塑联公司的权利，也是塑联公司履行合同的义务，塑联公司将因软件测试的费用216343.36元主张由云海公司承担，与合同基本约定不符；塑联公司也未能证明因云海公司违约造成的多余成本的具体数额及合理计算方法：塑联公司主张的三名员工并非为云海公司违约而特意指定处理云海公司违约事由的员工，即使没有认定云海公司违约，也系自项目开始即为塑联公司工作，塑联公司将其支出主张全部由云海公司承担并不合理，于法无据。三、塑联公司花费5793.6元租用服务器的费用是塑联公司为履行合同支出的必要费用，该费用在合同中并未约定由云海公司承担，相反在维护费中约定“维护费（不包含服务器、域名费）”，塑联公司主张由云海公司承担与合同约定不符。四、云海公司主张的塑联公司赔偿因其违约而造成的经济损失293108.6元，但未提交足够证明力的证据证明系完成合同标的后或因塑联公司解除合同而造成的损失，按其主张的计算标准虽在结果上计算得出与合同数额一致的结论，但未证明合同签订时其标的166000元系塑联公司知晓依据同样方式计算，不足以证明通过该方式计算出来的损失系塑联公司订立合同时预见到或者应当预见到的因违反合同可能造成的实际损失。综上，一审法院依照《中华人民共和国合同法》第一百一十三条、第九十六条、《中华人民共和国民事诉讼法》第六十四条第一款之规定，判决：一、驳回塑联公司的诉讼请求；二、驳回云海公司的反诉诉讼请求。本诉案件受理费11851.38元由塑联公司负担，反诉案件受理费3566元由云海公司负担。本院二审期间，云海公司围绕上诉请求提供了以下证据：1.《APP效果图电子版》光盘，证明2018年11月5日，云海公司向塑联公司发送IOS全部效果图邮件，塑联公司确认后，云海公司按该效果图进行开发并完成。2.《易企业秀宣传视频》光盘，证明塑联公司一审期间在网络上存留的企业宣传视频仍然显示王世跃是“塑联联合创始人、现任塑联公司董事副总经理、塑联平台招商负责人”，证明王世跃确为塑联公司高管。3.邮件截图，证明云海公司对塑联公司多次新增需求的报价平均为1000元/日，塑联公司对该价格是知悉且无异议，该报价也与云海公司合同报价、因塑联公司违约所造成的损失金额是相对应的。本院组织当事人进行了证据质证。对云海公司二审提供的证据，本院认定如下：证据1系IOS效果图图片，该证据无法证明云海公司已按该效果图进行开发并已完成开发，故本院对该证据的证据效力不予确认。证据2《易企业秀宣传视频》，云海公司没有提供该证据的原始载体，且王世跃是否是塑联公司的董事副总经理，应以塑联公司的工商登记记载为准，故本院对该证据的证据效力不予确认。证据3邮件截图体现的内容仅为塑联公司就工期和所需开发时间回复云海公司，不能证明塑联公司认可1000元/日的报价及云海公司的实际损失，本院对该证据的证明力不予采信。二审期间，塑联公司申请向云海公司调取云海公司BUG系统SULIAN账号内塑联公司与云海公司交流的全部内容。经审查，塑料公司申请调查取证的证据对证明待证事实无意义，本院不予准许。本院经审理查明，一审判决查明的事实与本案的证据一致，本院予以确认。本院认为，本案系委托合同纠纷。根据云海公司的上诉和塑联公司答辩的内容，二审争议的焦点问题是塑联公司是否应当向云海公司支付合同剩余款项及其逾期付款利息，是否应当赔偿云海公司的经济损失。《最高人民法院关于适用的解释》第九十条规定：“当事人对自己提出的诉讼请求所依据的事实或者反驳对方诉讼请求所依据的事实，应当提供证据加以证明，但法律另有规定的除外。在作出判决前，当事人未能提供证据或者证据不足以证明其事实主张的，由负有举证证明责任的当事人承担不利的后果。”本案中，云海公司主张塑联公司应当向其支付合同剩余款项93000元及其逾期付款利息，并应当赔偿其经济损失293108.6元，但云海公司并未提供充分有效的证据证明其上述主张，故本院对云海公司的上述主张不予采信。理由如下：一、根据合同的约定，应当经过塑联公司测试通过后软件才算正式完工。本案没有足够证明力的证据直接认定软件工作已全部完成。二、云海公司主张塑联公司应支付合同剩余款项，应当证明合同义务已全部完成，但云海公司提交的证据不足以证明其合同义务已达到全部完成的程度。云海公司作为软件开发者，应当提供相应运行证据证明交付的软件具备基本功能，再由塑联公司在此功能上测试bug修正，但云海公司并未提供此方面的有效证据，也没有提供证据证明塑联公司存在恶意促使测试条件不成就的行为，因此，云海公司应承担相应的举证不能的不利后果。三、云海公司主张王世跃系本案合同开发项目中塑联公司的负责人，其行为构成表见代理，其作出的意思表示对塑联公司具有约束力，但云海公司提供的证据并不足以证明其上述主张。云海公司提供的证据无法证明王世跃系塑联公司的适格授权人，云海公司工作人员与王世跃的对话记录也无法证明塑联公司认可软件已经完成，更无法证明王世跃在软件没有全部完成的情况下的承诺付款对塑联公司具有约束力。因此，云海公司的该项主张缺乏事实依据，本院不予采信。四、云海公司主张塑联公司违约应赔偿其经济损失293108.6元，但未能提供充分有效的证据证明塑联公司存在违约行为，云海公司提供的证据也不足以证明其存在上述经济损失。因此，在云海公司未能提供充分有效的证据证明其全部合同义务已经履行完毕且履行符合合同的约定的情况下，云海公司主张塑联公司赔偿经济损失，缺乏依据，理由不成立，本院不予采信。综上所述，云海公司的上诉请求不能成立，应予驳回；一审判决认定事实清楚，适用法律正确，应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项的规定，判决如下：驳回上诉，维持原判。二审案件受理费7188.31元，由上诉人汕头市云海网络科技有限公司负担。本判决为终审判决。审判长  姚焕丹审判员  江炯坤审判员  林 立二〇二〇年九月十四日书记员  姚晓銮