from django.db.models import Q

# from userservice.models import Employee
# from payrollservice.models.payrollmodels import Employee_Attendancedetails,EmployeeStructure_Mapping
from utilityservice.service.applicationconstants import ApplicationNamespace
from utilityservice.service.threadlocal import NWisefinThread
from utilityservice.data.response.nwisefinlist import NWisefinList
from utilityservice.data.response.nwisefinlitelist import NWisefinLiteList



# class userservice(NWisefinThread):
#     def __init__(self, scope):
#         super().__init__(scope)
#         self._set_namespace(ApplicationNamespace.USER_SERVICE)
#     def get_emp_name(self,emp_id):
#         arr=[]
#         obj=Employee.objects.filter(id=emp_id).values("id","full_name","code","doj","designation")
#         for i in obj:
#             arr.append({"id":i["id"],"name":i["full_name"],"code":i["code"],"doj":i["doj"],"designation":i["designation"]})
#         return arr
#
#     def get_employeeid(self,query):
#         # arr=NWisefinList()
#         arr=[]
#         id_list=NWisefinList()
#         obj=Employee_Attendancedetails.objects.filter(status=1).values("emp_id")
#         for i in obj:
#            arr.append(i["emp_id"])
#
#         data = self.get_emp(arr, query)
#         return data
#
#     def get_empdetails(self,attendnance_id):
#         arr =NWisefinList()
#         data = self.get_emp_attend(attendnance_id)
#         if len(data.get_list()) != 0:
#             for j in data.get_list():
#                 obj = Employee.objects.filter(id=j, status=1).values("id", "full_name", "code", "doj", "designation")
#                 if len(obj) != 0:
#                     for i in obj:
#                        arr.append({"id": i["id"], "name": i["full_name"], "code": i["code"], "doj": i["doj"],
#                                     "designation": i["designation"]})
#                     return arr
#         else:
#             return arr
#     def get_emp_attend(self,emp_id):
#         # arr=NWisefinList()
#         arr=NWisefinList()
#         id_list=NWisefinList()
#         obj=Employee_Attendancedetails.objects.filter(id=emp_id,status=1,entity_id=self._entity_id()).values("id","emp_id")
#         if len(obj) == 0:
#             return id_list
#         else:
#             for i in obj:
#                arr.append(i["emp_id"])
#             return arr
#
#
#     def get_emp(self,emp_id,query):
#         arr=NWisefinList()
#         condition=Q(id__in=emp_id)
#         if query!=None and query!="":
#             condition&=Q(full_name__icontains=query)
#         obj=Employee.objects.filter(condition).values("id","full_name","code","doj","designation")
#         for i in obj:
#            details={"id":i["id"],"name":i["full_name"],"code":i["code"],"doj":i["doj"],"designation":i["designation"]}
#            arr.append(details)
#         return arr
#
#     def get_empstr_details(self,strucuture_id):
#         arr =NWisefinList()
#         data = self.get_emp_strucure(strucuture_id)
#         if len(data.get_list()) != 0:
#             for j in data.get_list():
#                 obj = Employee.objects.filter(id=j, status=1).values("id", "full_name", "code", "doj", "designation")
#                 if len(obj) != 0:
#                     for i in obj:
#                        arr.append({"id": i["id"], "name": i["full_name"], "code": i["code"], "doj": i["doj"],
#                                     "designation": i["designation"]})
#                     return arr
#         else:
#             return arr
#     def get_emp_strucure(self,emp_id):
#         # arr=NWisefinList()
#         arr=NWisefinList()
#         id_list=NWisefinList()
#         obj=EmployeeStructure_Mapping.objects.filter(id=emp_id,status=1,entity_id=self._entity_id()).values("id","emp_id")
#         if len(obj) == 0:
#             return id_list
#         else:
#             for i in obj:
#                arr.append(i["emp_id"])
#             return arr


class MONTH:
    jan =1
    feb = 2
    mar = 3
    apr = 4
    may = 5
    june=6
    july=7
    aug=8
    sep=9
    oct=10
    nov=11
    dec=12
    jan_VALUE = "JAN"
    feb_VALUE = 'FEB'
    mar_VALUE = 'MAR'
    apr_VALUE = 'APR'
    may_VALUE = 'MAY'
    june_VALUE = 'JUN'
    july_VALUE = 'JUL'
    aug_VALUE = 'AUG'
    sep_VALUE = 'SEP'
    oct_VALUE = 'OCT'
    nov_VALUE = 'NOV'
    dec_VALUE = 'DEC'

def getmonth(number):
    if (number == MONTH.jan):
        name = MONTH.jan_VALUE
        return name
    elif (number == MONTH.feb):
            name = MONTH.feb_VALUE
            return name
    elif (number == MONTH.mar):
        name = MONTH.mar_VALUE
        return name
    elif (number == MONTH.apr):
            name = MONTH.apr_VALUE
            return name
    elif (number == MONTH.may):
        name = MONTH.may_VALUE
        return name
    elif (number == MONTH.june):
        name = MONTH.june_VALUE
        return name
    elif (number == MONTH.july):
        name = MONTH.july_VALUE
        return name
    elif (number == MONTH.aug):
        name = MONTH.aug_VALUE
        return name
    elif (number == MONTH.sep):
        name = MONTH.sep_VALUE
        return name
    elif (number == MONTH.oct):
        name = MONTH.oct_VALUE
        return name
    elif (number == MONTH.sep):
        name = MONTH.sep_VALUE
        return name
    elif (number == MONTH.oct):
        name = MONTH.oct_VALUE
        return name
    elif (number == MONTH.nov):
        name = MONTH.nov_VALUE
        return name
    elif (number == MONTH.dec):
        name = MONTH.dec_VALUE
        return name


class PaymodeType:
    CHEQUE = 1
    BANKTRANSFER = 2
    DIRECTDEPOSIT = 3

    CHEQUE_VAL = 'CHEQUE'
    BANKTRANSFER_VAL = 'BANK TRANSFER'
    DIRECTDEPOSIT_VAL = 'DIRECT DEPOSIT'

def get_paymode(type):
    if (type == PaymodeType.CHEQUE):
        data = {'id': PaymodeType.CHEQUE, "name": PaymodeType.CHEQUE_VAL}
    elif (type == PaymodeType.BANKTRANSFER):
        data = {'id': PaymodeType.BANKTRANSFER, 'name': PaymodeType.BANKTRANSFER_VAL}
    elif (type == PaymodeType.DIRECTDEPOSIT):
        data = {'id': PaymodeType.DIRECTDEPOSIT, 'name': PaymodeType.DIRECTDEPOSIT_VAL}
    else:
        data = {'id': None, 'name': None}
    return data

def paymode_dropdown():
    idarr = [PaymodeType.CHEQUE, PaymodeType.BANKTRANSFER, PaymodeType.DIRECTDEPOSIT]
    typearr = [PaymodeType.CHEQUE_VAL, PaymodeType.BANKTRANSFER_VAL, PaymodeType.DIRECTDEPOSIT_VAL]
    length = len(idarr)
    vyslist = NWisefinList()
    for x in range(length):
        vyslite = NWisefinLiteList()
        vyslite.id = idarr[x]
        vyslite.text = typearr[x]
        vyslist.append(vyslite)
    return vyslist

class Activestatus:
    active = 1
    inactive = 0


class Advancestatus:
    approved = 1
    pending = 2
    reject = 3
    hold = 4
    processing = 5
    paid = 6
    completed = 7
    draft = 8
    move_to_checker = 9
    move_to_approver = 10
    open = 11
    closed = 12
    force_closed = 13
    approved_val = 'APPROVED'
    pending_val = 'PENDING'
    reject_val = 'REJECT'
    hold_val = 'HOLD'
    processing_val = 'PROCESSING'
    paid_val = 'PAID'
    completed_val = 'COMPLETED'
    draft_val = 'DRAFT'
    move_to_checker_val = 'MOVE TO CHECKER'
    move_to_approver_val = 'MOVE TO APPROVER'
    open_val = 'OPEN'
    closed_val = 'CLOSED'
    force_closed_val ='FORCE_CLOSED'

def advancestatus(text):
    if (text == Advancestatus.approved or text == Advancestatus.approved_val ):
        data = {"id": Advancestatus.approved, "name": Advancestatus.approved_val}
    elif (text == Advancestatus.pending  or text == Advancestatus.pending_val):
        data = {"id": Advancestatus.pending, "name": Advancestatus.pending_val}
    elif (text == Advancestatus.reject or text == Advancestatus.reject_val):
        data = {"id": Advancestatus.reject, "name": Advancestatus.reject_val}
    elif (text == Advancestatus.hold or text == Advancestatus.hold_val):
        data = {"id": Advancestatus.hold, "name":Advancestatus.hold_val}
    elif (text == Advancestatus.processing or text == Advancestatus.processing_val):
        data = {"id": Advancestatus.processing, "name": Advancestatus.processing_val}
    elif (text == Advancestatus.paid or text == Advancestatus.paid_val):
        data = {"id": Advancestatus.paid, "name": Advancestatus.paid_val}
    elif (text == Advancestatus.completed or text == Advancestatus.completed_val):
        data = {"id": Advancestatus.completed, "name": Advancestatus.completed_val}
    elif (text == Advancestatus.draft or text == Advancestatus.draft_val):
        data = {"id": Advancestatus.draft, "name": Advancestatus.draft_val}
    elif(text == Advancestatus.move_to_checker or text == Advancestatus.move_to_checker_val):
        data = {"id": Advancestatus.move_to_checker, "name":Advancestatus.move_to_checker_val}
    elif(text == Advancestatus.move_to_approver or text == Advancestatus.move_to_approver_val):
        data = {"id":Advancestatus.move_to_approver, "name":Advancestatus.move_to_approver_val}
    elif (text == Advancestatus.open or text == Advancestatus.open_val):
        data = {"id": Advancestatus.open, "name": Advancestatus.open_val}
    elif (text == Advancestatus.closed or text == Advancestatus.closed_val):
        data = {"id": Advancestatus.closed, "name": Advancestatus.closed_val}
    elif (text == Advancestatus.force_closed or text == Advancestatus.force_closed_val):
        data = {"id": Advancestatus.force_closed, "name": Advancestatus.force_closed_val}
    else:
        data = {"id": None, "name": None}
    return data

def advancestatus_dropdown():
    idarr = [Advancestatus.approved, Advancestatus.pending, Advancestatus.reject, Advancestatus.hold, Advancestatus.processing, Advancestatus.paid, Advancestatus.completed,Advancestatus.move_to_checker,Advancestatus.move_to_approver,Advancestatus.open,Advancestatus.closed,Advancestatus.force_closed]
    typearr = [Advancestatus.approved_val, Advancestatus.pending_val, Advancestatus.reject_val,Advancestatus.hold_val, Advancestatus.processing_val,Advancestatus.paid_val,Advancestatus.completed_val, Advancestatus.move_to_checker_val,Advancestatus.move_to_approver_val,Advancestatus.open_val, Advancestatus.closed_val,Advancestatus.force_closed_val]
    length = len(idarr)
    vyslist = NWisefinList()
    for x in range(length):
        vyslite = NWisefinLiteList()
        vyslite.id = idarr[x]
        vyslite.text = typearr[x]
        vyslist.append(vyslite)
    return vyslist


class Advancetype:
    employeeadvance_details = 1
    employeeadvance_payment = 2
    paystructure = 3
    paystructure_details = 4
    employeepaystructure_deduction = 5
    employeemonthly_payinfo = 6
    employeemonthlypay_details = 7
    employeemonthlypay_deduction = 8
    payrollprocessing_change = 9
    employeeadditional_allowance = 10

    employeeadvance_details_val = 'EMPLOYEEADVANCE_DETAILS'
    employeeadvance_payment_val = 'EMPLOYEEADVANCE_PAYMENT'
    paystructure_val = 'PAYSTRUCTURE'
    paystructure_details_val = 'PAYSTRUCTURE DETAILS'
    employeepaystructure_deduction_val = 'EMPLOYEEPAYSTRUCTURE DEDUCTION'
    employeemonthly_payinfo_val = 'EMPLOYEEMONTHLY PAYINFO'
    employeemonthlypay_details_val = 'EMPLOYEEMONTHLYPAY DETAILS'
    employeemonthlypay_deduction_val = 'EMPLOYEEMONTHLYPAY DEDUCTION'
    payrollprocessing_change_val = 'PAYROLLPROCESSINGCHANGE'
    employeeadditional_allowance_val = 'EMPLOYEEADDITIONAL ALLOWANCE'


def get_advance_type(type):
    if type == Advancetype.employeeadvance_details:
        data = {'id': Advancetype.employeeadvance_details, "name": Advancetype.employeeadvance_details_val}
    elif type == Advancetype.employeeadvance_payment:
        data = {'id':Advancetype.employeeadvance_payment, 'name':Advancetype.employeeadvance_payment_val}
    else:
        data = {'id':None,'name':None}
    return data


class ModifyStatus:
    DELETE = 0
    CREATE = 1
    UPDATE = 2


class PF_Type:
    normal = 1
    standard_PF = 2
    virtual_PF = 3

    normal_val = 'NORMAL_PF'
    standard_PF_val = 'STANDARD_PF'
    virtual_PF_val = 'VIRTUAL_PF'

def get_pf_type(type):
    if type == PF_Type.normal or type == PF_Type.normal_val:
        data = {'id': PF_Type.normal, "name": PF_Type.normal_val}
    elif type == PF_Type.standard_PF or type ==  PF_Type.standard_PF_val:
        data = {'id': PF_Type.standard_PF, "name": PF_Type.standard_PF_val}
    elif type == PF_Type.virtual_PF or type == PF_Type.virtual_PF_val:
        data = {'id': PF_Type.virtual_PF, "name": PF_Type.virtual_PF_val}
    else:
        data = {'id':None,'name':None}
    return data



class AllowanceType:
    basic = {"id": 1, "text": 'Basic', "percentage": 81}
    other = {"id": 2, "text": 'others', "percentage": 19}

    var_arr = [basic, other]

    def set_type(self, type_val):
        for i in self.var_arr:
            if type_val == i['id']:
                return i
        return ''


class CompanyAllowanceType:
    esi = {"id": 1, "text": 'ESI'}
    pf = {"id": 2, "text": "PF"}

    val_arr = [esi, pf]

    def set_type(self, type_val):
        for i in self.val_arr:
            if type_val == i['id']:
                return i
        return ''


class FlagRef_Type:
    ESI = 1
    PF = 2
    COMPANYCONTRIBUTION = 3
    Payrolltran = 4
    Employeeadvancedetails = 5
    PAYROLLTEMPLATE = 6


class PayrollDeductionType:
    QUARTERLY = 1
    HALFYEARLY = 2
    YEARLY = 3
    MONTHLY = 4
    CUSTOM = 5

    QUARTERLY_VAL = 'QUARTERLY'
    HALFYEARLY_VAL = 'HALFYEARLY'
    YEARLY_VAL = 'YEARLY'
    MONTHLY_VAL = 'MONTHLY'
    CUSTOM_VAL = 'CUSTOM'


def payrolldeduction_val(type):
    if (type == PayrollDeductionType.QUARTERLY_VAL or type == PayrollDeductionType.QUARTERLY):
        data = {"id": PayrollDeductionType.QUARTERLY, "name": PayrollDeductionType.QUARTERLY_VAL}
    elif (type == PayrollDeductionType.HALFYEARLY_VAL or type == PayrollDeductionType.HALFYEARLY):
        data = {"id": PayrollDeductionType.HALFYEARLY, "name": PayrollDeductionType.HALFYEARLY_VAL}
    elif (type == PayrollDeductionType.YEARLY_VAL or type == PayrollDeductionType.YEARLY):
        data = {"id": PayrollDeductionType.YEARLY, "name": PayrollDeductionType.YEARLY_VAL}
    elif (type == PayrollDeductionType.MONTHLY_VAL or type == PayrollDeductionType.MONTHLY):
        data = {"id": PayrollDeductionType.MONTHLY, "name": PayrollDeductionType.MONTHLY_VAL}
    elif (type == PayrollDeductionType.CUSTOM_VAL or type == PayrollDeductionType.CUSTOM):
        data = {"id": PayrollDeductionType.CUSTOM, "name": PayrollDeductionType.CUSTOM_VAL}
    else:
        data = {'id': None, 'name': None}
    return data

def payrolldeduction_type():
    idarr = [PayrollDeductionType.QUARTERLY, PayrollDeductionType.HALFYEARLY, PayrollDeductionType.YEARLY, PayrollDeductionType.MONTHLY,
             PayrollDeductionType.CUSTOM]
    typearr = [PayrollDeductionType.QUARTERLY_VAL, PayrollDeductionType.HALFYEARLY_VAL, PayrollDeductionType.YEARLY_VAL,
               PayrollDeductionType.MONTHLY_VAL, PayrollDeductionType.CUSTOM_VAL]
    length = len(idarr)
    list_data = NWisefinList()
    for x in range(length):
        vys_list = NWisefinLiteList()
        vys_list.id = idarr[x]
        vys_list.name = typearr[x]
        list_data.append(vys_list)
    return list_data

class bonus_calculatetype:
    QUARTERLY = {"id": 1, "text": 'QUARTERLY',"values":[6, 9, 12, 3]}
    HALFYEARLY = {"id": 2, "text": "HALFYEARLY","values":[9,3]}
    YEARLY = {"id":3, "text": "YEARLY","values":[3]}


    var_arr = [QUARTERLY, HALFYEARLY, YEARLY]

    def set_bonustype(self, type_val):
        for i in self.var_arr:
            if type_val == i['id']:
                return i
        return ''


class Comptype_Category:

    POSITIVE = 1
    DEDUCTION = 2
    OTHERS = 3
    BONUS = 4
    CUSTOM_EARNINGS = 5
    CUSTOM_DEDUCTION = 6

    POSITIVE_VAL = 'POSITIVE'
    DEDUCTION_VAL = 'DEDUCTION'
    OTHERS_VAL = 'OTHERS'
    BONUS_VAL = 'BONUS'
    CUSTOM_EARNINGS_VAL = 'CUSTOM EARNINGS'
    CUSTOM_DEDUCTION_VAL = 'CUSTOM DEDUCTION'


def category_val(category):
    if category == Comptype_Category.POSITIVE or category == Comptype_Category.POSITIVE_VAL:
        data = {'id': Comptype_Category.POSITIVE, 'category': Comptype_Category.POSITIVE_VAL}
    elif category == Comptype_Category.DEDUCTION or category == Comptype_Category.DEDUCTION_VAL:
        data = {'id': Comptype_Category.DEDUCTION, 'category': Comptype_Category.DEDUCTION_VAL}
    elif category == Comptype_Category.OTHERS or category == Comptype_Category.OTHERS_VAL:
        data = {'id': Comptype_Category.OTHERS, 'category': Comptype_Category.OTHERS_VAL}
    elif category == Comptype_Category.BONUS or category == Comptype_Category.BONUS_VAL:
        data = {'id': Comptype_Category.BONUS, 'category': Comptype_Category.BONUS_VAL}
    elif category == Comptype_Category.CUSTOM_EARNINGS or category == Comptype_Category.CUSTOM_EARNINGS_VAL:
        data = {'id': Comptype_Category.CUSTOM_EARNINGS, 'category': Comptype_Category.CUSTOM_EARNINGS_VAL}
    elif category == Comptype_Category.CUSTOM_DEDUCTION or category == Comptype_Category.CUSTOM_DEDUCTION_VAL:
        data = {'id': Comptype_Category.CUSTOM_DEDUCTION, 'category': Comptype_Category.CUSTOM_DEDUCTION_VAL}
    else:
        data = {'id': None, 'category': None}
    return data

def category_dropdown_():
    category_id = [Comptype_Category.POSITIVE, Comptype_Category.DEDUCTION, Comptype_Category.OTHERS, Comptype_Category.BONUS,Comptype_Category.CUSTOM_EARNINGS,Comptype_Category.CUSTOM_DEDUCTION]
    category_val = [Comptype_Category.POSITIVE_VAL, Comptype_Category.DEDUCTION_VAL, Comptype_Category.OTHERS_VAL, Comptype_Category.BONUS_VAL,Comptype_Category.CUSTOM_EARNINGS_VAL,Comptype_Category.CUSTOM_DEDUCTION_VAL]

    li_data = NWisefinList()
    for i in range(len(category_id)):
        li = NWisefinLiteList()
        li.id = category_id[i]
        li.name = category_val[i]
        li_data.append(li)
    return li_data


class PayrollValidation:
    status = None

def master_validation(resp_data):
    response = {}
    failed = None
    if 'percentage' in resp_data:
        if resp_data['percentage'] == "":
            percentage = 0
        else:
            percentage = (float(resp_data['percentage']))
        try:
            if not percentage <= 100:
                response['percentage_message'] = 'Percentage limit 100% only'
                failed = True
        except ValueError:
                response['percentage_message'] = 'please enter percentage'
                failed = True

    if 'name' in resp_data:
        name = resp_data['name']
        if name:
            name_check = name.split()
            if name_check[0][0].isdigit():
                response['name_message'] = 'Name should not start with a number'
                failed = True
        else:
            response['name_message'] = 'please enter name'
            failed = True


    if failed:
        PayrollValidation.status = 'Failure'
    else:
        PayrollValidation.status = 'Success'
    return response

class Report_type:
    DATETIME = 1
    BOOLEAN = 2
    CHARACTER = 3
    INT = 4

    DATETIME_VAL = 'DATETIME'
    BOOLEAN_VAL = 'BOOLEAN'
    CHARACTER_VAL = 'CHARACTER'
    INT_VAL = 'INTEGER'

def report_dropdown_():
    report_id = [Report_type.DATETIME, Report_type.BOOLEAN, Report_type.CHARACTER, Report_type.INT]
    report_val = [Report_type.DATETIME_VAL, Report_type.BOOLEAN_VAL, Report_type.CHARACTER_VAL, Report_type.INT_VAL]
    li_data = NWisefinList()
    for i in range(len(report_id)):
        li = NWisefinLiteList()
        li.id = report_id[i]
        li.type = report_val[i]
        li_data.append(li)
    return li_data


def report_val(type):
    if type == Report_type.DATETIME:
        data = {'id': Report_type.DATETIME, 'type': Report_type.DATETIME_VAL}
    elif type == Report_type.BOOLEAN:
        data = {'id': Report_type.BOOLEAN, 'type': Report_type.BOOLEAN_VAL}
    elif type == Report_type.CHARACTER:
        data = {'id': Report_type.CHARACTER, 'type': Report_type.CHARACTER_VAL}
    elif type == Report_type.INT:
        data = {'id': Report_type.INT, 'type': Report_type.INT_VAL}
    else:
        data = {'id': None, 'type': None}
    return data

class is_advance_data:
    advance = 1
    advance_val = 'ADVANCE'
    data = {'id':advance, 'name': advance_val}

class ReportColumns_Type:
    employee_basic = 1
    employee_bank = 2
    employee_salary = 3
    employee_basic_val = 'EMPLOYEE_BASIC'
    employee_bank_val = 'EMPLOYEE_BANK'
    employee_salary_val = 'EMPLOYEE_SALARY'

def reportcolumns_typeval(type):
    if type == ReportColumns_Type.employee_basic:
        data = {'id': ReportColumns_Type.employee_basic, 'type': ReportColumns_Type.employee_basic_val}
    elif type == ReportColumns_Type.employee_bank:
        data = {'id': ReportColumns_Type.employee_bank, 'type': ReportColumns_Type.employee_bank_val}
    elif type == ReportColumns_Type.employee_salary:
        data = {'id': ReportColumns_Type.employee_salary, 'type': ReportColumns_Type.employee_salary_val}
    else:
        data = {'id': None, 'type': None}
    return data


def reportcolumns_dropdown_():
    report_id = [ReportColumns_Type.employee_basic, ReportColumns_Type.employee_bank, ReportColumns_Type.employee_salary]
    report_val = [ReportColumns_Type.employee_basic_val, ReportColumns_Type.employee_bank_val, ReportColumns_Type.employee_salary_val]
    li_data = NWisefinList()
    for i in range(len(report_id)):
        li = NWisefinLiteList()
        li.id = report_id[i]
        li.type = report_val[i]
        li_data.append(li)
    return li_data

def data_roundup_arr(amt_arr):
    from decimal import Decimal
    arr = []
    if amt_arr:
        for i in amt_arr:
            amount = data_roundup(i)
            amount_decimal = Decimal(amount)
            arr.append(amount_decimal)
    return arr
def data_roundup(amt):
    amount = f"{round(amt):.2f}"
    return amount

def net_pay_calc(amount):
    div_amt = amount / 5
    r_amount = round(div_amt)
    mul_amt = r_amount * 5
    # mul_amt = f"{mul_amt:.2f}"
    return mul_amt

def net_pay_calc_str(amount):
    div_amt = amount / 5
    r_amount = round(div_amt)
    mul_amt = r_amount * 5
    mul_amt = f"{mul_amt:.2f}"
    return mul_amt


def float_to_decimal(value):
    from decimal import Decimal, ROUND_HALF_UP
    if type(value) == float:
        return Decimal(value).quantize(Decimal("1.00"), rounding=ROUND_HALF_UP)
    return value

def netpay_float_to_decimal(value):
    from decimal import Decimal, ROUND_HALF_UP
    if type(value) == float:
        amount_val = net_pay_calc(value)
        return Decimal(amount_val).quantize(Decimal("1.00"), rounding=ROUND_HALF_UP)
    return value
