show detail
							parent
							
								
									b1b71ff805
								
							
						
					
					
						commit
						37b9ce4315
					
				| 
						 | 
					@ -11,6 +11,7 @@
 | 
				
			||||||
            <field name="rate" onchange="onchange_vals"/>
 | 
					            <field name="rate" onchange="onchange_vals"/>
 | 
				
			||||||
            <field name="amount"/>
 | 
					            <field name="amount"/>
 | 
				
			||||||
            <field name="pay_amount"/>
 | 
					            <field name="pay_amount"/>
 | 
				
			||||||
 | 
					            <field name="cycle_item_id"/>
 | 
				
			||||||
        </tab>
 | 
					        </tab>
 | 
				
			||||||
        <tab string="Computation">
 | 
					        <tab string="Computation">
 | 
				
			||||||
            <field name="labor_cost_id"/>
 | 
					            <field name="labor_cost_id"/>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
<list model="clinic.labor.cost.line">
 | 
					<list model="clinic.labor.cost.line">
 | 
				
			||||||
    <field name="date"/>
 | 
					    <field name="date"/>
 | 
				
			||||||
    <field name="cycle_id"/>
 | 
					    <field name="cycle_id"/>
 | 
				
			||||||
 | 
					    <field name="department_id"/>
 | 
				
			||||||
    <field name="staff_id"/>
 | 
					    <field name="staff_id"/>
 | 
				
			||||||
    <field name="type"/>
 | 
					    <field name="type"/>
 | 
				
			||||||
    <field name="amount"/>
 | 
					    <field name="amount"/>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,7 @@ class LaborCostLine(Model):
 | 
				
			||||||
        for obj in self.browse(ids):
 | 
					        for obj in self.browse(ids):
 | 
				
			||||||
            res[obj.id]={
 | 
					            res[obj.id]={
 | 
				
			||||||
                'pay_amount': round(obj.amount,0),
 | 
					                'pay_amount': round(obj.amount,0),
 | 
				
			||||||
 | 
					                'cycle_item_id': obj.labor_cost_id.cycle_item_id.id,
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        return res
 | 
					        return res
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,6 +39,7 @@ class LaborCostLine(Model):
 | 
				
			||||||
        'rate': fields.Float("Rate",scale=2),
 | 
					        'rate': fields.Float("Rate",scale=2),
 | 
				
			||||||
        'amount': fields.Float("Amount",scale=2),
 | 
					        'amount': fields.Float("Amount",scale=2),
 | 
				
			||||||
        'pay_amount': fields.Float("Pay Amount",function="_get_all",function_multi=True),
 | 
					        'pay_amount': fields.Float("Pay Amount",function="_get_all",function_multi=True),
 | 
				
			||||||
 | 
					        'cycle_item_id': fields.Many2One("clinic.cycle.item","Cycle Item",function="_get_all",function_multi=True),
 | 
				
			||||||
        'date': fields.Date("Date",search=True),
 | 
					        'date': fields.Date("Date",search=True),
 | 
				
			||||||
        'description': fields.Char("Description"),
 | 
					        'description': fields.Char("Description"),
 | 
				
			||||||
        'company_id': fields.Many2One('company','Company'),
 | 
					        'company_id': fields.Many2One('company','Company'),
 | 
				
			||||||
| 
						 | 
					@ -49,7 +51,7 @@ class LaborCostLine(Model):
 | 
				
			||||||
    _defaults={
 | 
					    _defaults={
 | 
				
			||||||
        "company_id": lambda *a: get_active_company(),
 | 
					        "company_id": lambda *a: get_active_company(),
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    _order="cycle_id,level_id"
 | 
					    _order="date,cycle_id,department_id"
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def create(self,vals,**kw):
 | 
					    def create(self,vals,**kw):
 | 
				
			||||||
        new_id=super().create(vals,**kw)
 | 
					        new_id=super().create(vals,**kw)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,6 +100,10 @@ class ReportLaborCostOverTime(Model):
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            staffs[staff.name]['amount']+=amt # amount from formular
 | 
					            staffs[staff.name]['amount']+=amt # amount from formular
 | 
				
			||||||
            staffs[staff.name]['cycle_qty']+=1 # number of cycle
 | 
					            staffs[staff.name]['cycle_qty']+=1 # number of cycle
 | 
				
			||||||
 | 
					        def replace_quote(dom=""):
 | 
				
			||||||
 | 
					            dom=dom.replace("False","false")
 | 
				
			||||||
 | 
					            dom=dom.replace("True","true")
 | 
				
			||||||
 | 
					            return dom.replace("'","\"")
 | 
				
			||||||
        lines=[]
 | 
					        lines=[]
 | 
				
			||||||
        snames=sorted(staffs.keys()) #sort by staff name
 | 
					        snames=sorted(staffs.keys()) #sort by staff name
 | 
				
			||||||
        no=1
 | 
					        no=1
 | 
				
			||||||
| 
						 | 
					@ -115,12 +119,18 @@ class ReportLaborCostOverTime(Model):
 | 
				
			||||||
            ot_amount=ot_per_cycle*ot_qty
 | 
					            ot_amount=ot_per_cycle*ot_qty
 | 
				
			||||||
            net_pay=(vals['staff_wage'] or 0)+ot_amount
 | 
					            net_pay=(vals['staff_wage'] or 0)+ot_amount
 | 
				
			||||||
            net_diff=(vals['amount'] or 0)-net_pay
 | 
					            net_diff=(vals['amount'] or 0)-net_pay
 | 
				
			||||||
 | 
					            dom=[
 | 
				
			||||||
 | 
					                ['date', '>=', date_from],
 | 
				
			||||||
 | 
					                ['date', '<=', date_to],
 | 
				
			||||||
 | 
					                ['staff_id','=', vals['staff_id']],
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
            vals.update({
 | 
					            vals.update({
 | 
				
			||||||
                'no': no,
 | 
					                'no': no,
 | 
				
			||||||
                'ot_qty': ot_qty,
 | 
					                'ot_qty': ot_qty,
 | 
				
			||||||
                'ot_amount': ot_amount,
 | 
					                'ot_amount': ot_amount,
 | 
				
			||||||
                'net_pay': net_pay,
 | 
					                'net_pay': net_pay,
 | 
				
			||||||
                'net_diff': net_diff,
 | 
					                'net_diff': net_diff,
 | 
				
			||||||
 | 
					                'action_options': 'mode=list&search_domain=%s&tab_no=0'%replace_quote('%s'%(dom)),
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            lines.append(vals)
 | 
					            lines.append(vals)
 | 
				
			||||||
            no+=1
 | 
					            no+=1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -161,8 +161,12 @@ class ClinicSetting(Model):
 | 
				
			||||||
        if user_id !=1:
 | 
					        if user_id !=1:
 | 
				
			||||||
            print("Only admin!!")
 | 
					            print("Only admin!!")
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        obj=self.browse(ids)[0]
 | 
					        for cost_line in get_model("clinic.labor.cost.line").search_browse([]):
 | 
				
			||||||
        obj.del_duplicate_staff()
 | 
					            cost_line.write({
 | 
				
			||||||
 | 
					                'note': ' ',
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					        #obj=self.browse(ids)[0]
 | 
				
			||||||
 | 
					        #obj.del_duplicate_staff()
 | 
				
			||||||
        print("Done!")
 | 
					        print("Done!")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def del_duplicate_staff(self,ids,context={}):
 | 
					    def del_duplicate_staff(self,ids,context={}):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,8 +29,13 @@
 | 
				
			||||||
                    <td style="text-align:right;">
 | 
					                    <td style="text-align:right;">
 | 
				
			||||||
                        <a href="#name=clinic_report_labor_cost_summary&defaults.date_from={{../date_from}}&defaults.date_to={{../date_to}}&defaults.staff_type={{staff_type}}&defaults.staff_id={{staff_id}}">{{currency amount zero=""}}</a>
 | 
					                        <a href="#name=clinic_report_labor_cost_summary&defaults.date_from={{../date_from}}&defaults.date_to={{../date_to}}&defaults.staff_type={{staff_type}}&defaults.staff_id={{staff_id}}">{{currency amount zero=""}}</a>
 | 
				
			||||||
                    </td>
 | 
					                    </td>
 | 
				
			||||||
                    <td style="text-align:right;">{{max_cycle}}</th>
 | 
					                    <td style="text-align:right;">{{max_cycle}}</td>
 | 
				
			||||||
 | 
					                    <td style="text-align:right;">
 | 
				
			||||||
 | 
					                        {{view "link" string=cycle_qty action="clinic_labor_cost_item" action_options=action_options}}
 | 
				
			||||||
 | 
					                    </td>
 | 
				
			||||||
 | 
					                    <!--
 | 
				
			||||||
                    <td style="text-align:right;">{{cycle_qty}}</th>
 | 
					                    <td style="text-align:right;">{{cycle_qty}}</th>
 | 
				
			||||||
 | 
					                    -->
 | 
				
			||||||
                    <td style="text-align:right;">{{ot_qty}}</th>
 | 
					                    <td style="text-align:right;">{{ot_qty}}</th>
 | 
				
			||||||
                    <td style="text-align:right;">{{currency ot_per_cycle zero=""}}</th>
 | 
					                    <td style="text-align:right;">{{currency ot_per_cycle zero=""}}</th>
 | 
				
			||||||
                    <td style="text-align:right;color:orange">{{currency ot_amount zero=""}}</th>
 | 
					                    <td style="text-align:right;color:orange">{{currency ot_amount zero=""}}</th>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,3 +3,8 @@
 | 
				
			||||||
        - staff -> ok
 | 
					        - staff -> ok
 | 
				
			||||||
        - patient
 | 
					        - patient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> explain nurse
 | 
				
			||||||
 | 
					    กรณีแก้ไขรายชื่อหมอให้ดูรายชื่อแพทย์ให้ดี
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> note:
 | 
				
			||||||
 | 
					    แก้ไขยาก หากมาเจอข้อผิดพลาดบางครั้ง
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue