ecshop自动分成二次开发实例

大概逻辑:
后台操作一个订单发货的时候进行自动分成,后台取消发货,退货,改为未发货的时候去掉自动分成部分。
核心代码:lib_common.php

//分成积分计算

function fenchenjifen($usertype=3,$point){

 $affiliate = unserialize($GLOBALS['_CFG']['affiliate']);       

  

if($usertype==3){   //采购

 

                             

                if ($affiliate['config']['level_register_up'])

        {

            $affiliate['config']['level_register_up'] /= 100;

        }

            $point_cg = round($affiliate['config']['level_register_up'] * intval($point), 0);

            return $point_cg;

        }   

if($usertype==1){//经销商

        if ($affiliate['config']['level_money_all'])

        {

            $affiliate['config']['level_money_all'] /= 100;

        }

            $point_cg = round($affiliate['config']['level_money_all'] * intval($point), 0);

            return $point_cg;

        }   

if($usertype==2){//财务

    if ($affiliate['config']['level_register_all'])

        {

            $affiliate['config']['level_register_all'] /= 100;

        }

            $point_cg = round($affiliate['config']['level_register_all'] * intval($point), 0);

            return $point_cg;

        }   

             

         

         

}

 

 

/**

* 

* @param undefined $order  订单信息

* @param undefined $buyuser 购买者信息

* @param undefined $integral 计算积分

* $type = 1 增加  $type=-1 撤销

* 分成log状态99

*/

function fun_fencheng_change($order,$buyuser,$integral=array(),$type=1){//店铺分成计算

    if(intval($order['parent_shopid'])==0) return false;

    if(!is_array($buyuser)) return false;

     

    $order_id=$order['order_id'];

    $separate_by=99;

    switch($buyuser['usertype']){

        case '0'://购买者类型

         $row = $GLOBALS['db']->getRow("SELECT * from " . $GLOBALS['ecs']->table('users') . " u ".

                    " WHERE u.shopid  =".$order['parent_shopid']." and u.usertype=1"

                );//获取pid

         

            $up_uid = $row['user_id'];          

            if(!empty($up_uid) && $up_uid > 0)

            {

                $money=$point=0;    

                $point= fenchenjifen(1,$integral['custom_points']); 

                         

               // $info = sprintf($GLOBALS['_LANG']['separate_info'], $order['order_sn'], $money, $point);

                $info="订单".$order['order_sn']."分成获得积分:".$point;

                log_account_change($up_uid, $money, 0, ($type)*$point, ($type)*$point, $info);

                //var_dump($info);  

                if($type==1){           

                 

                write_affiliate_log1($order_id, $up_uid, $row['user_name'], $money, $point, $separate_by);

                }else{

                    rollback_affiliate_log($order_id);

                }

                $orderupdate['is_separate']=$type==1?$separate_by:0;

                 $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'),

        $orderupdate, 'UPDATE', "order_id = '$order_id'");

            }

        break;

        case '3':

        $row = $GLOBALS['db']->getAll("SELECT u.shopid,u.user_id,u.usertype, u.user_name FROM " . $GLOBALS['ecs']->table('users') . " u ".

                    " WHERE u.shopid= ".$order['parent_shopid']." and u.usertype in (1,2)");

                    foreach($row as $val){ // 经销商和财务获得分成

                        if($val['usertype']==1){

                            $pointf = fenchenjifen(1,$integral['custom_points']);   

                            }

                        if($val['usertype']==2){

                            $pointf = fenchenjifen(2,$integral['custom_points']);   

                            }   

                            $up_uid = $val['user_id'];

                            //$info = sprintf($GLOBALS['_LANG']['separate_info'], $order['order_sn'], $money, $pointf);

                            $info="订单".$order['order_sn']."分成获得积分:".$pointf;

                log_account_change($up_uid, $money, 0, ($type)*$pointf, ($type)*$pointf, $info);

                 

                if($type==1){           

                      write_affiliate_log1($order_id, $up_uid, $val['user_name'], $money, $pointf, $separate_by);

                }else{

                    rollback_affiliate_log($order_id);

                }

                 $orderupdate['is_separate']=$type==1?$separate_by:0;

                 $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'),

        $orderupdate, 'UPDATE', "order_id = '$order_id'");      

                    }

         

        break;

    }

    return true;

}

 

/**

* 

* @param undefined $oid

* @param undefined $uid

* @param undefined $username

* @param undefined $money

* @param undefined $point

* @param undefined $separate_by

* 写入订单分成 log

*/

function write_affiliate_log1($oid, $uid, $username, $money, $point, $separate_by)

{

    $time = gmtime();

    $sql = "INSERT INTO " . $GLOBALS['ecs']->table('affiliate_log') . "( order_id, user_id, user_name, time, money, point, separate_type)".

                                                              " VALUES ( '$oid', '$uid', '$username', '$time', '$money', '$point', $separate_by)";

    if ($oid)

    {

        $GLOBALS['db']->query($sql);

    }

}

 

//撤销订单分成

function rollback_affiliate_log($order_id,$falg=-2){

      $sql = "UPDATE " . $GLOBALS['ecs']->table('affiliate_log') .

               " SET separate_type = '$falg'" .

               " WHERE order_id = '$order_id'";

         $GLOBALS['db']->query($sql);

}

需要注意的点:
后台发货程序在admin/order.php
需要修改的地方有: 发货 866行 ,取消发货 1035行 改为未发货 3961行 退货4132行。
本代码只计算分成部分。自己下单部分另外。
这个代码是按照店铺ID分成,多商户的。为ecshop二次开发版。无法用于原版。
调用分成: fun_fencheng_change($order,$user,$integral,1);
取消分成: fun_fencheng_change($order,$user,$integral,-1);

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ecshop 自动分成、ecshop二次开发、ecshop二次开发手册、ecshop二次开发教程、韩顺平ecshop二次开发,以便于您获取更多的相关知识。

时间: 2024-10-29 17:17:27

ecshop自动分成二次开发实例的相关文章

百度ueditor编辑器二次开发实例

最近在做一个后台的项目,项目中用到了复文本框,公司用的是UEditor,但是需求为了更方便编辑图片,特意提了如下功能: 1.上传图片时图片宽度固定为500,长度等比例进行缩放,但不限制单张图片长度:图片进行等比缩放后保持100%原画质: 2.长传图片是选中图片后点击确定自动上传,无需再选择一次"开始上传". 3.图片上传完成后,在图片下方添加一个选填的文本输入框用以填写图注,如填写,图注使用默认字体居中显示. 针对上面的需求,我对 UEditor源码进行了研究和修改.看到网上有关UEd

TFS二次开发的第一个实例

首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和 TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS API服务类.他们的区别如下: 基本上我们可以通过上面两个类对TFS操作所有功能点.下面我们先看看如何使用 TfsTeamProjectCollection获取特定团队集合下的所有项目,并且打印出项目名称. //取出团队集 合URI下的项目名称,如果团队集合为空则取默认集合下项目 //Uri tf

php微信公众账号开发之五个坑(二)_php实例

上篇说到微信公众账号的几个坑,前面五个,已经说到菜单,宝宝继续往下赘述了.可惜,还不知道宝宝的宝宝到底是不是心疼宝宝呢,完了,我凌乱了...  回到正题,我们就不吐槽其他的了,上一篇说到微信的菜单了,那么,我们现在说说菜单回复等等的吧.  菜单回复是需要处理XML文件的,我们根据微信返回的XML文件,可以得到每个微信用户相对于微信公众号的唯一标识.微信公众平台的机制简单的将就是我们自己输出固定格式的xml文件,然后微信APP负责解析,得到我们想要的信息,然后对信息统一处理.  第六坑,如果你看微

AVEVA Draft自动出图二次开发

AVEVA Draft Auto Drawing Customisation AVEVA Draft自动出图二次开发 eryar@163.com 摘要Abstract:本文简要描述了CAD软件自动出图的意义,详细说明AVEVA Draft模块的PML二次开发步骤,并给出了PML实例,便于理解及工程应用.通过对Draft的二次开发,可以根据需要对指定模型进行自动出图,提高工作效率. 关键字Key Words:AVEVA Draft.PDMS.PML.Automatical Drawing 一.引言

Drupal7 form表单二次开发要点与实例

 这篇文章主要介绍了Drupal7 form表单二次开发要点与实例,解决了经常使用的Form表单提交后跳转问题,需要的朋友可以参考下 请记得收藏此文,在你进行Drupal 7 custom module时,经常会用到的form 表单的跳转或重载.   主要汇总三个要点:   1.页面提交后,经过#submit处理后,需要redirect 跳转到另外一个页面. 2.url路径中存在destination参数时,页面直接跳转到destination所指的url,无法控制的问题. 3.form表单如何

discuz!-ecshop二次开发中关于discuz和Ucenter的问题?、、

问题描述 ecshop二次开发中关于discuz和Ucenter的问题?.. ecshop中如何整合Ucenter和Discuz???当登录Ucenter时,ECShop是否也会登录, 当登录到ecshop时,Discuz是否也会登录???求解..... 解决方案 ecshop二次开发ecshop二次开发ecshop 二次开发

destoon二次开发常用数据库操作_php实例

destoon在初始化系统后系统会自动连接数据库,并将数据库操作对象保存在$db.对于数据库操作方法请参考include/db_mysql.class.php函数原型,下面对常用数据库操作举例说明. 1.执行SQL语句 $db->query("INSERT INTO `{$DT_PRE}table` (`xxx`) VALUES ('yyy')"); $db->query("UPDATE `{$DT_PRE}table` SET `xxx`='yyy' WHERE

destoon二次开发模板及调用语法汇总_php实例

一.模板存放及调用规则 模板存放于系统 template 目录,template 目录下的一个目录 例如:template/default/ 即为一套模板 模板文件以 .htm 为扩展名,可直接存放于模板目录 例如 template/default/index.htm 也可以存放于模板目录的子目录里 例如:template/default/member/index.htm 在PHP文件里,使用模板语法为 <?php include template('index'); ?> 或者 <?p

ecshop二次开发增加购物金额上限功能

最近在接触Ecshop,国内最大的php开源电子商城系统,其后台默认管理页面里有一项功能是最小购物金额限制,通俗的讲就是当客户买的东西价格太小,没有利润可赚的时候,不允许用户提交订单. 开发增加购物金额上限功能-ecshop二次开发"> 然而在现实的某些方面的交易中,我们可能还需要一个最大购物金额限制,所以此文的由来就是这里.初看,貌似很简单么,一个表单里加个inputtext,前面搞个label或者span写上"最大购物金额",然后把该增加的inputtext的val