@@ -219,6 +219,45 @@ def test_payment_entry_against_advance(self):
219
219
self .assertEqual (advance .status , "Unpaid" )
220
220
self .assertEqual (advance .paid_amount , 700 )
221
221
222
+ def test_precision (self ):
223
+ employee_name = make_employee (
"[email protected] " )
224
+ advance = make_employee_advance (employee_name )
225
+ journal_entry = make_journal_entry_for_advance (advance )
226
+ journal_entry .submit ()
227
+
228
+ # PARTLY CLAIMED AND RETURNED
229
+ payable_account = get_payable_account ("_Test Company" )
230
+ claim = make_expense_claim (
231
+ payable_account , 650.35 , 619.34 , "_Test Company" , "Travel Expenses - _TC" , do_not_submit = True
232
+ )
233
+
234
+ claim = get_advances_for_claim (claim , advance .name , amount = 619.34 )
235
+ claim .save ()
236
+ claim .submit ()
237
+
238
+ advance .reload ()
239
+ self .assertEqual (advance .status , "Paid" )
240
+
241
+ entry = make_return_entry (
242
+ employee = advance .employee ,
243
+ company = advance .company ,
244
+ employee_advance_name = advance .name ,
245
+ return_amount = advance .paid_amount - advance .claimed_amount ,
246
+ advance_account = advance .advance_account ,
247
+ mode_of_payment = advance .mode_of_payment ,
248
+ currency = advance .currency ,
249
+ exchange_rate = advance .exchange_rate ,
250
+ )
251
+
252
+ entry = frappe .get_doc (entry )
253
+ entry .insert ()
254
+ entry .submit ()
255
+
256
+ advance .reload ()
257
+ # precision is respected
258
+ self .assertEqual (advance .return_amount , 380.66 )
259
+ self .assertEqual (advance .status , "Partly Claimed and Returned" )
260
+
222
261
223
262
def make_journal_entry_for_advance (advance ):
224
263
journal_entry = frappe .get_doc (make_bank_entry ("Employee Advance" , advance .name ))
0 commit comments