P15GEN2\59518
2024-05-29 d4210c7c4b04abde20037ea8aa0f54ef8a2649aa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?xml version="1.0" encoding="UTF-8" ?>
    
<sqls>
    <dataSpace name="order">
    
        <sql name="refreshRebateAmtUsed">
            <![CDATA[
            update rebate_amt_detail set amt_used = (
                select sum(so_order_detail_rebate.amt) from so_order 
                left join so_order_detail_rebate on so_order_detail_rebate.parent_id = so_order.id
                where so_order.customer_id = rebate_amt_detail.account_id
                    and so_order.state_code = 'Open'
            ), amt_freeze = (
                select sum(so_order_detail_rebate.amt) from so_order 
                left join so_order_detail_rebate on so_order_detail_rebate.parent_id = so_order.id
                where so_order.customer_id = rebate_amt_detail.account_id
                    and so_order.state_code = 'UnderApproval'
            )
            where rebate_amt_detail.account_id = '@{account_id}'
            ]]>    
        </sql>
        
        <sql name="refreshRebateAmtAvailable">
            <![CDATA[
            update rebate_amt_detail set amt_net = amt_book - amt_used, 
                amt_available = amt_book - amt_used - amt_freeze
            where rebate_amt_detail.account_id = '@{account_id}'
            ]]>    
        </sql>
        
        <sql name="refreshRebateQtyUsed">
            <![CDATA[
            update rebate_qty_detail set qty_used = (
                select sum(so_order_detail.qty) from so_order 
                left join so_order_detail on so_order_detail.parent_id = so_order.id
                where so_order.customer_id = rebate_qty_detail.account_id
                    and so_order.state_code = 'Open' and so_order_detail.type_code = 'gift'
            ), qty_freeze = (
                select sum(so_order_detail.qty) from so_order 
                left join so_order_detail on so_order_detail.parent_id = so_order.id
                where so_order.customer_id = rebate_qty_detail.account_id
                    and so_order.state_code = 'UnderApproval' and so_order_detail.type_code = 'gift'
            )
            where rebate_qty_detail.account_id = '@{account_id}'
            ]]>    
        </sql>
        
        <sql name="refreshRebateQtyAvailable">
            <![CDATA[
            update rebate_qty_detail set qty_net = qty_book - qty_used, 
                qty_available = qty_book - qty_used - qty_freeze
            where rebate_qty_detail.account_id = '@{account_id}'
            ]]>    
        </sql>
 
    </dataSpace>
    
    <dataSpace name="implant">
        <sql name="getImplantPositionHierarchy">
                <![CDATA[
                select md_position_hierarchy.* from md_position_hierarchy
                where exists(
                    select 1 from md_channel_structure
                    where md_channel_structure.hospital_id = '@{hospitalId}' and md_position_hierarchy.position_id = md_channel_structure.position_id
                )
            ]]>    
        </sql>
        
        <sql name="getPositionEmployee">
                <![CDATA[
                select distinct md_position.id position_id,  md_position.name position_name, md_employee.code employee_code,md_employee.name employee_name
                from md_position
                left join md_position_employee on md_position.id = md_position_employee.position_id
                left join md_employee on md_employee.id = md_position_employee.employee_id
                where md_position.id = '@{positionId}'
            ]]>    
        </sql>
    
    </dataSpace>
    <dataSpace name="order-setting">
    
        <sql name="getOrderSettingLastUpdateTime">
            <![CDATA[
            select max(update_time) from (
                select max(update_time) as update_time from so_order_setting
                union all
                select max(update_time) as update_time from so_order_setting_rule            
            )tbl
            ]]>    
        </sql>        
    
        <sql name="getOneBUCheckRules">
            <![CDATA[
            select * from (
                select so_order_setting_rule.id, so_order_setting_rule.bu_id,
                    so_order_setting_rule.is_active, so_order_setting_rule.value,
                    so_order_setting_rule_action.name, so_order_setting_rule_action.title,
                    so_order_setting_rule_action.class_name, so_order_setting_rule.level,
                     so_order_setting_rule_action.unit,
                    so_order_setting_rule.order_no, so_order_setting_rule_action.limit_count, (
                        select count(1) from so_order_setting_rule_limit 
                        left join so_order_setting on so_order_setting_rule_limit.setting_template_id = so_order_setting.template_id
                            and so_order_setting.bu_id = '@{buId}'
                        where so_order_setting_rule_limit.rule_action_id = so_order_setting_rule_action.id
                            and so_order_setting.is_active = 'T' and so_order_setting_rule.is_active = 'T'
                    ) as count
                from so_order_setting_rule left join so_order_setting_rule_action
                    on so_order_setting_rule.action_id = so_order_setting_rule_action.id
                where bu_id = '@{buId}'
            )tbl 
            where tbl.limit_count <= tbl.count
            order by order_no        
            ]]>    
        </sql>    
 
        <sql name="updateOrderDetailNCId">
            <![CDATA[
            update so_order_detail set sku_nc_id = (
                select nc_id from md_prod_sku 
                where md_prod_sku.id = so_order_detail.sku_id
            )
            where parent_id = '@{orderId}' and sku_nc_id is null
            ]]>    
        </sql>            
        
        <sql name="getQtyReceived">
            <![CDATA[            
            select order_id, customer_id, sum(qty) qty_received from so_delivery_detail        
            where so_delivery_detail.parent_id = '@{deliveryId}'
            ]]>    
        </sql>
        
    </dataSpace>    
</sqls>