<?php

class Lancamento extends TRecord
{
    const TABLENAME  = 'lancamento';
    const PRIMARYKEY = 'id';
    const IDPOLICY   =  'serial'; // {max, serial}

    private $conta;
    private $tipo_pagamento;

    /**
     * Constructor method
     */
    public function __construct($id = NULL, $callObjectLoad = TRUE)
    {
        parent::__construct($id, $callObjectLoad);
        parent::addAttribute('conta_id');
        parent::addAttribute('tipo_pagamento_id');
        parent::addAttribute('parcela');
        parent::addAttribute('dt_vencimento');
        parent::addAttribute('valor');
        parent::addAttribute('dt_pagamento');
        parent::addAttribute('ano_pagamento');
        parent::addAttribute('mes_pagamento');
        parent::addAttribute('ano_mes_pagamento');
        parent::addAttribute('ano_vencimento');
        parent::addAttribute('mes_vencimento');
        parent::addAttribute('ano_mes_vencimento');
    
    }

    /**
     * Method set_conta
     * Sample of usage: $var->conta = $object;
     * @param $object Instance of Conta
     */
    public function set_conta(Conta $object)
    {
        $this->conta = $object;
        $this->conta_id = $object->id;
    }

    /**
     * Method get_conta
     * Sample of usage: $var->conta->attribute;
     * @returns Conta instance
     */
    public function get_conta()
    {
    
        // loads the associated object
        if (empty($this->conta))
            $this->conta = new Conta($this->conta_id);
    
        // returns the associated object
        return $this->conta;
    }
    /**
     * Method set_tipo_pagamento
     * Sample of usage: $var->tipo_pagamento = $object;
     * @param $object Instance of TipoPagamento
     */
    public function set_tipo_pagamento(TipoPagamento $object)
    {
        $this->tipo_pagamento = $object;
        $this->tipo_pagamento_id = $object->id;
    }

    /**
     * Method get_tipo_pagamento
     * Sample of usage: $var->tipo_pagamento->attribute;
     * @returns TipoPagamento instance
     */
    public function get_tipo_pagamento()
    {
    
        // loads the associated object
        if (empty($this->tipo_pagamento))
            $this->tipo_pagamento = new TipoPagamento($this->tipo_pagamento_id);
    
        // returns the associated object
        return $this->tipo_pagamento;
    }

    public function onBeforeStore($object)
    {
        if (! empty($object->dt_pagamento))
        {
            $object->ano_pagamento = date('Y', strtotime($object->dt_pagamento));
            $object->mes_pagamento = date('m', strtotime($object->dt_pagamento));
            $object->ano_mes_pagamento = date('Ym', strtotime($object->dt_pagamento));
        }
    
        if (! empty($object->dt_vencimento))
        {
            $object->ano_vencimento = date('Y', strtotime($object->dt_vencimento));
            $object->mes_vencimento = date('m', strtotime($object->dt_vencimento));
            $object->ano_mes_vencimento = date('Ym', strtotime($object->dt_vencimento));
        }
    }
    
}

