This commit is contained in:
zainab8585 2024-09-11 13:13:28 +02:00
parent f2475cd33f
commit 466fadfc1e
5 changed files with 44 additions and 28 deletions

View File

@ -42,7 +42,7 @@ class EndOfRent(models.Model):
invoice_id = fields.Many2one('account.move', string="Invoice") invoice_id = fields.Many2one('account.move', string="Invoice")
def _prepare_out_refund_invoice_values(self, end, amount): def _prepare_out_refund_invoice_values(self, end, amount):
self.contract_id.partner_id.property_account_receivable_id = end.contract_id.debit_account_id.id self.contract_id.partner_id.property_account_receivable_id = end.contract_id.accrued_account_id.id
invoice_vals = { invoice_vals = {
'ref': end.name, 'ref': end.name,
'move_type': 'out_refund', 'move_type': 'out_refund',
@ -55,19 +55,19 @@ class EndOfRent(models.Model):
'name': end.name + ' - ' + str(end.date), 'name': end.name + ' - ' + str(end.date),
'price_unit': amount, 'price_unit': amount,
'quantity': 1.0, 'quantity': 1.0,
'account_id': end.contract_id.accrued_account_id.id, 'account_id': end.contract_id.debit_account_id.id,
})], })],
'line_ids': [(0, 0, {'account_id': end.contract_id.accrued_account_id.id, 'debit': 0.0, 'credit': amount, 'line_ids': [(0, 0, {'account_id':end.contract_id.debit_account_id.id, 'debit': 0.0, 'credit': amount,
'name': end.name + ' - ' + str(end.date), 'name': end.name + ' - ' + str(end.date),
'quantity': 1}), 'quantity': 1}),
(0, 0, (0, 0,
{'account_id': end.contract_id.debit_account_id.id, 'debit': amount, 'credit': 0.0, 'quantity': 1})] {'account_id': end.contract_id.accrued_account_id.id , 'debit': amount, 'credit': 0.0, 'quantity': 1})]
} }
return invoice_vals return invoice_vals
def _prepare_invoice_values(self, end, amount): def _prepare_invoice_values(self, end, amount):
self.contract_id.partner_id.property_account_receivable_id = end.contract_id.revenue_account_id.id self.contract_id.partner_id.property_account_receivable_id = end.contract_id.debit_account_id.id
invoice_vals = { invoice_vals = {
'ref': end.name, 'ref': end.name,
'move_type': 'out_invoice', 'move_type': 'out_invoice',
@ -80,13 +80,15 @@ class EndOfRent(models.Model):
'name': end.name + ' - ' + str(end.date), 'name': end.name + ' - ' + str(end.date),
'price_unit': amount, 'price_unit': amount,
'quantity': 1.0, 'quantity': 1.0,
'account_id': end.contract_id.revenue_account_id.id,
})], })],
'line_ids': [(0, 0, {'account_id': end.contract_id.debit_account_id.id, 'debit': 0.0, 'credit': amount, 'line_ids': [(0, 0, {'account_id':end.contract_id.revenue_account_id.id, 'debit': 0.0, 'credit': amount,
'name': end.name + ' - ' + str(end.date), 'name': end.name + ' - ' + str(end.date),
'quantity': 1}), 'quantity': 1}),
(0, 0, (0, 0,
{'account_id': end.contract_id.revenue_account_id.id, 'debit': amount, 'credit': 0.0, 'quantity': 1})] {'account_id': end.contract_id.debit_account_id.id, 'debit': amount, 'credit': 0.0, 'quantity': 1})]
} }
return invoice_vals return invoice_vals
@ -107,10 +109,10 @@ class EndOfRent(models.Model):
if (rec.remain_amount > 0.0) or (rec.remain_amount > 0.0 and rec.maintenance): if (rec.remain_amount > 0.0) or (rec.remain_amount > 0.0 and rec.maintenance):
invoice_vals = rec._prepare_out_refund_invoice_values(rec, rec.remain_amount) invoice_vals = rec._prepare_out_refund_invoice_values(rec, rec.remain_amount)
invoice = self.env['account.move'].sudo().create(invoice_vals).with_user(self.env.uid) invoice = self.env['account.move'].sudo().create(invoice_vals).with_user(self.env.uid)
# Get the ID of the second line if len(invoice.invoice_line_ids) > 1:
line_id = invoice.invoice_line_ids[1].id line_id = invoice.invoice_line_ids[1].id
commands = [(2, line_id, 0)] commands = [(2, line_id, 0)]
invoice.write({'invoice_line_ids': commands}) invoice.write({'invoice_line_ids': commands})
rec.invoice_id = invoice.id rec.invoice_id = invoice.id
rec.write({'state': 'done'}) rec.write({'state': 'done'})
elif (rec.insurance_amount == 0.0 or rec.remain_amount==0.0) and not rec.maintenance: elif (rec.insurance_amount == 0.0 or rec.remain_amount==0.0) and not rec.maintenance:
@ -118,20 +120,20 @@ class EndOfRent(models.Model):
elif (rec.insurance_amount == 0.0 or rec.remain_amount==0.0) and rec.maintenance: elif (rec.insurance_amount == 0.0 or rec.remain_amount==0.0) and rec.maintenance:
invoice_vals = rec._prepare_invoice_values(rec, abs(rec.remain_amount)) invoice_vals = rec._prepare_invoice_values(rec, abs(rec.remain_amount))
invoice = self.env['account.move'].sudo().create(invoice_vals).with_user(self.env.uid) invoice = self.env['account.move'].sudo().create(invoice_vals).with_user(self.env.uid)
# Get the ID of the second line if len(invoice.invoice_line_ids) > 1:
line_id = invoice.invoice_line_ids[1].id line_id = invoice.invoice_line_ids[1].id
commands = [(2, line_id, 0)] commands = [(2, line_id, 0)]
invoice.write({'invoice_line_ids': commands}) invoice.write({'invoice_line_ids': commands})
rec.invoice_id = invoice.id rec.invoice_id = invoice.id
rec.write({'state': 'done'}) rec.write({'state': 'done'})
elif (rec.remain_amount < 0.0) or (rec.remain_amount<0.0 and rec.maintenance): elif (rec.remain_amount < 0.0) or (rec.remain_amount<0.0 and rec.maintenance):
invoice_vals = rec._prepare_invoice_values(rec, abs(rec.remain_amount)) invoice_vals = rec._prepare_invoice_values(rec, abs(rec.remain_amount))
invoice = self.env['account.move'].sudo().create(invoice_vals).with_user(self.env.uid) invoice = self.env['account.move'].sudo().create(invoice_vals).with_user(self.env.uid)
# Get the ID of the second line if len(invoice.invoice_line_ids) > 1:
line_id = invoice.invoice_line_ids[1].id line_id = invoice.invoice_line_ids[1].id
commands = [(2, line_id, 0)] commands = [(2, line_id, 0)]
invoice.write({'invoice_line_ids': commands}) invoice.write({'invoice_line_ids': commands})
rec.invoice_id = invoice.id rec.invoice_id = invoice.id
rec.write({'state': 'done'}) rec.write({'state': 'done'})
if rec.contract_state == 'before': if rec.contract_state == 'before':
@ -161,6 +163,8 @@ class EndOfRent(models.Model):
'partner_id': rec.contract_id.partner_id.id, 'partner_id': rec.contract_id.partner_id.id,
'end_rent_id': rec.id, 'end_rent_id': rec.id,
'maintenance_type': 'end_contract', 'maintenance_type': 'end_contract',
'hand_cost': rec.hand_cost,
'total_amount': rec.hand_cost+rec.maintenance_cost,
'date': rec.date, 'date': rec.date,
'state': 'draft', } 'state': 'draft', }
maintenance_id = self.env['property.management.maintenance'].create(vals) maintenance_id = self.env['property.management.maintenance'].create(vals)
@ -272,6 +276,15 @@ class PropertyManagementMaintenance(models.Model):
'quantity': line.qty, 'quantity': line.qty,
'price_unit': line.cost, 'price_unit': line.cost,
})) }))
line_data.append((0, 0, {
'name':_('Hand Cost') + maintenance.name + ' '+self.property_id.name+' ' +unit_name+' ' +maintenance.partner_id.name if maintenance.partner_id else \
_('Hand Cost') + ' ' + maintenance.name +' '+self.property_id.name+' ' +unit_name+' ' + maintenance.vendor_id.name,
'quantity': 1.0,
'price_unit': self.hand_cost,
'account_id': payment.contract_id.revenue_account_id.id,
'analytic_account_id': payment.property_id.account_analy_id.id if payment.property_id.account_analy_id else False,
'tax_ids': [(6, 0, [payment.tax_id.id])] if payment.tax_id else False, # Assigning tax_id to tax_ids
}))
invoice_vals = { invoice_vals = {
'ref': maintenance.name, 'ref': maintenance.name,
'move_type': 'in_invoice', 'move_type': 'in_invoice',
@ -293,9 +306,9 @@ class PropertyManagementMaintenance(models.Model):
invoice_vals = rec._prepare_invoice_values(rec, abs(rec.total_amount)) invoice_vals = rec._prepare_invoice_values(rec, abs(rec.total_amount))
if rec.end_rent_id and rec.end_rent_id.state != 'done': if rec.end_rent_id and rec.end_rent_id.state != 'done':
raise exceptions.ValidationError(_('Please confirm end of rent first ')) raise exceptions.ValidationError(_('Please confirm end of rent first '))
if not rec.end_rent_id: # if not rec.end_rent_id:
invoice = self.env['account.move'].sudo().create(invoice_vals).with_user(self.env.uid) invoice = self.env['account.move'].sudo().create(invoice_vals).with_user(self.env.uid)
rec.invoice_id = invoice.id rec.invoice_id = invoice.id
for line in rec.end_line_ids: for line in rec.end_line_ids:
line_ids.append((0, 0, { line_ids.append((0, 0, {
'product_id': line.product_id.id, 'product_id': line.product_id.id,

View File

@ -113,7 +113,7 @@ class RentPayment(models.Model):
if payment.amount>0.00: if payment.amount>0.00:
line_invoice.append((0, 0, { line_invoice.append((0, 0, {
'name':'قيمة الإيجار ' + ' - ' + str(payment.contract_id.name or '') + ' - ' + str(self.property_id.name or '') + ' - ' + unit_name + ' - ' + str(self.name or '') + ' - ' + str(payment.code or '') + ' - ' + str(payment.due_date or ''), 'name':_('Reant Amount ') + ' - ' + str(payment.contract_id.name or '') + ' - ' + str(self.property_id.name or '') + ' - ' + unit_name + ' - ' + str(self.name or '') + ' - ' + str(payment.code or '') + ' - ' + str(payment.due_date or ''),
'quantity': 1.0, 'quantity': 1.0,
'price_unit': self.amount, 'price_unit': self.amount,
'account_id': payment.contract_id.revenue_account_id.id, 'account_id': payment.contract_id.revenue_account_id.id,
@ -122,7 +122,7 @@ class RentPayment(models.Model):
})) }))
if payment.water_cost>0.00: if payment.water_cost>0.00:
line_invoice.append((0, 0, { line_invoice.append((0, 0, {
'name': 'تكلفة المياه'+ ' - ' + str(payment.contract_id.name or '') + ' - ' + str(self.property_id.name or '') + ' - ' + unit_name + ' - ' + str(self.name or '') + ' - ' + str(payment.code or '') + ' - ' + str(payment.due_date or ''), 'name': _('Water Cost ')+ ' - ' + str(payment.contract_id.name or '') + ' - ' + str(self.property_id.name or '') + ' - ' + unit_name + ' - ' + str(self.name or '') + ' - ' + str(payment.code or '') + ' - ' + str(payment.due_date or ''),
'price_unit':self.water_cost, 'price_unit':self.water_cost,
'quantity': 1.0, 'quantity': 1.0,
'account_id': payment.contract_id.revenue_account_id.id, 'account_id': payment.contract_id.revenue_account_id.id,
@ -131,7 +131,7 @@ class RentPayment(models.Model):
}),) }),)
if payment.service_cost>0.00: if payment.service_cost>0.00:
line_invoice.append((0, 0, { line_invoice.append((0, 0, {
'name': 'قيمة الخدمات' + ' - ' + str(payment.contract_id.name or '') + ' - ' + str(self.property_id.name or '') + ' - ' + unit_name + ' - ' + str(self.name or '') + ' - ' + str(payment.code or '') + ' - ' + str(payment.due_date or ''), 'name': _('Serviecs Cost') + ' - ' + str(payment.contract_id.name or '') + ' - ' + str(self.property_id.name or '') + ' - ' + unit_name + ' - ' + str(self.name or '') + ' - ' + str(payment.code or '') + ' - ' + str(payment.due_date or ''),
'price_unit': self.service_cost, 'price_unit': self.service_cost,
'quantity': 1.0, 'quantity': 1.0,
'analytic_account_id': payment.property_id.account_analy_id.id if payment.property_id.account_analy_id else False, 'analytic_account_id': payment.property_id.account_analy_id.id if payment.property_id.account_analy_id else False,

View File

@ -351,6 +351,7 @@ class RentalContract(models.Model):
full = True full = True
if self.property_id.state in ['reserve', 'rent']: if self.property_id.state in ['reserve', 'rent']:
raise exceptions.ValidationError(_("Property is already reserved or rented")) raise exceptions.ValidationError(_("Property is already reserved or rented"))
#
for units in self.property_id.unit_ids: for units in self.property_id.unit_ids:
if units.state in ['draft', 'available']: if units.state in ['draft', 'available']:
full = False full = False

View File

@ -66,9 +66,9 @@
readonly="1"/> readonly="1"/>
</group> </group>
<group> <group>
<field name="electric_meter" readonly="1"/> <field name="electric_meter" readonly="0"/>
<field name="electric_amount" readonly="1"/> <field name="electric_amount" readonly="0"/>
<field name="electric_payment_no" readonly="1"/> <field name="electric_payment_no" readonly="0"/>
</group> </group>
</group> </group>
<group> <group>

View File

@ -104,6 +104,8 @@
<filter string="Paid" name="paid_payment" domain="[('state','=','paid')]"/> <filter string="Paid" name="paid_payment" domain="[('state','=','paid')]"/>
<filter string="Cancelled" name="cancel_payment" domain="[('state','=','cancel')]"/> <filter string="Cancelled" name="cancel_payment" domain="[('state','=','cancel')]"/>
<filter string="Collected From Company" name="collected_from_company" domain="[('collected_from_company','=',True)]"/> <filter string="Collected From Company" name="collected_from_company" domain="[('collected_from_company','=',True)]"/>
<filter string="Invoice Commission" name="invoice_commission_id" domain="[('collected_from_company','=',True),('invoice_commission_id','!=',False)]"/>
<filter string="NOT Invoice Commission " name="no_invoice_commission_id" domain="[('collected_from_company','=',True),('invoice_commission_id','=',False)]"/>
<separator/> <separator/>
<filter name="payment_state" string="Not Canceled Payment" domain="[('state','!=','cancel')]"/> <filter name="payment_state" string="Not Canceled Payment" domain="[('state','!=','cancel')]"/>