##=require skr/vendor
class Skr.Screens.Invoice.Payment extends Lanes.React.Component
statics:
onPayment: (modal, ev) ->
{invoice, payment} = modal.refs.body
payment.save(include: 'invoice').then (pymnt) ->
invoice.amount_paid = invoice.amount_paid.minus(pymnt.amount)
modal.hide() unless pymnt.hasErrors
display: (viewport, invoice) ->
viewport.displayModal
title: "Accept Payment", size: 'lg',
onCancel: (m) ->
unsaved = invoice.payments.filter (pymnt) -> not pymnt.isNew()
invoice.payments.remove(unsaved)
m.hide()
onOk: @onPayment, className: "invoice-payment"
invoice: invoice
body: Skr.Screens.Invoice.Payment
getInitialState: ->
type: 'credit-card'
dataObjects:
invoice: 'props'
payment: ->
payment = @props.invoice.payments.find (pymnt) -> pymnt.isNew()
payment ||= this.props.invoice.payments.add({
amount: @props.invoice.open_amount
})
payment
onEnter: -> @props.modal.onButton()
onTypeChange: (ev) ->
@setState(type: ev.target.value)
visitPayment: (payment) ->
@props.modal.hide()
Lanes.Screens.Definitions.all.get('payments')
.display(props: {payment: payment})
PreviousPayments: (props) ->
previous = props.invoice.payments.filter (pymnt) -> not pymnt.isNew()
return null if _.isEmpty(previous)
{for pym in previous
ID
Date
Info
Amount
}
{pym.visible_id}
{Lanes.u.format.shortDateTime(pym.date)}
{pym.describe()}
{Lanes.u.format.currency(pym.amount)}