<?php

/**
 * Copyright 2005-2017 de Solis Soluções Livres Ltda.
 *
 * Este arquivo é parte do programa Gnuteca.
 *
 * O Gnuteca é um software de propriedade da SOLIS, sendo desenvolvido
 * e mantido exclusivamente por esta empresa.
 *
 * A licença de uso está disponível mediante aquisição exclusiva junto à
 * SOLIS. A licença é concedida sem caráter de exclusividade ao licenciado.
 * Os direitos de uso são perpétuos.
 *
 * Embora os códigos fontes sejam fornecidos, o software é de propriedade
 * da SOLIS, não sendo permitido ao adquirente da licença a sua revenda,
 * empréstimo ou cessão (onerosa ou não) à terceiros. Também não é permitido,
 * a qualquer título e tempo, promover no software qualquer tipo de alienação,
 * reprodução, distribuição, divulgação, registro, licenciamento, transferência
 * ou qualquer outro ato que prejudique ou comprometa os direitos de propriedade
 * de software, o nome e a imagem da sua proprietária e do próprio software,
 * além de configurar concorrência à SOLIS.
 *
 * O licenciado, com o acesso ao código fonte do software, terá o direito de
 * promover mudanças no respectivo código. No entanto, nas situações em que ele
 * contar com o suporte oficial prestado pela SOLIS, não poderá promover mudanças
 * no código fonte, sob pena de perda do referido suporte.
 *
 * Para conhecer em detalhes o Termo de Licenciamento do Software Gnuteca
 * leia o arquivo “LICENCA.txt” disponível junto ao código deste software.
 * 
 * 
 * Grid
 *
 *
 *
 *
 *
 * */
class GrdInterchange extends GSearchGrid
{

    public $busSupplierTypeAndLocation;
    public $busInterchange;

    public function __construct($data)
    {
        $MIOLO = MIOLO::getInstance();
        $module = MIOLO::getCurrentModule();
        $action = MIOLO::getCurrentAction();
        $busInterchange = $MIOLO->getBusiness($module, 'BusInterchange');
        $this->busSupplierTypeAndLocation = $MIOLO->getBusiness($module, 'BusSupplierTypeAndLocation');
        $this->busInterchange = $MIOLO->getBusiness($module, 'BusInterchange');

        $columns = array(
            new MGridColumn(_M('Código', $module), MGrid::ALIGN_RIGHT, null, null, true, null, true),
            new MGridColumn(_M('Tipo', $module), MGrid::ALIGN_LEFT, null, null, true, $busInterchange->listTypes(), true),
            new MGridColumn('supplierId', MGrid::ALIGN_LEFT, null, null, false, null, true),
            new MGridColumn(_M('Fornecedor', $module), MGrid::ALIGN_LEFT, null, null, true, null, true),
            new MGridColumn(_M('Nome da companhia', $module), MGrid::ALIGN_LEFT, null, null, true, null, true),
            new MGridColumn(_M('Descrição', $module), MGrid::ALIGN_LEFT, null, null, false, GUtil::listYesNo(), true),
            new MGridColumn(_M('Data', $module), MGrid::ALIGN_RIGHT, null, null, true, null, true, MSort::MASK_DATETIME_BR),
            new MGridColumn('Status code', MGrid::ALIGN_LEFT, null, null, false, null, true),
            new MGridColumn(_M('Estado', $module), MGrid::ALIGN_LEFT, null, null, true, null, true),
            new MGridColumn('typeId', MGrid::ALIGN_LEFT, null, null, false, null, true),
            new MGridColumn(_M('Tipo', $module), MGrid::ALIGN_LEFT, null, null, true, null, true),
            new MGridColumn(_M('Operador', $module), MGrid::ALIGN_LEFT, null, null, true, null, true),
        );

        parent::__construct($data, $columns);

        $args['interchangeId'] = '%0%';
        $args['function'] = 'update';
        $hrefUpdate = $MIOLO->getActionURL($module, $action, null, $args);
        $args['function'] = 'delete';
        $hrefDelete = GUtil::getAjax('tbBtnDelete_click', $args);

        $this->setIsScrollable();
        $this->addActionUpdate($hrefUpdate);
        $this->addActionDelete($hrefDelete);

        //Só mostra se a pessoa tiver permissão de editar
        if (GPerms::checkAccess($this->transaction, 'update', false))
        {
            
            $args['function'] = 'detail';
            $args['events'] = 'loadFields';
            $args['supplierId'] = '%2%';
            
            //Argumentos necessarios para abrir a edicao do fornecedor.
            $argsSupplier['function'] = 'update';
            $argsSupplier['supplierId'] = '%2%';
            $this->addActionIcon(_M('Editar fornecedor', $this->module), GUtil::getImageTheme('user-16x16.png'), $MIOLO->getActionURL($module, 'main:administration:supplier', null, $argsSupplier));
            $this->addActionIcon(_M('Gerar envio da carta', $this->module), GUtil::getImageTheme('document-16x16.png'), 'javascript:' . GUtil::getAjax('generateLetterSend', $args));
            $this->addActionIcon(_M('Enviar e-mail de permuta', $this->module), GUtil::getImageTheme('email-16x16.png'), 'javascript:' . GUtil::getAjax('sendMail', $args));
            $this->addActionIcon(_M('Confirmar', $this->module), GUtil::getImageTheme('confirm-16x16.png'), 'javascript:' . GUtil::getAjax('confirm', $args));
        }
        $this->setRowMethod($this, 'checkValues');
    }

    public function checkValues($i, $row, $actions, $columns)
    {
        $type = $columns[1]->control[$i]->value;
        $supplierId = $columns[2]->control[$i]->value;
        $statusId = $columns[7]->control[$i]->value;
        $interchangeTypeId = $columns[9]->control[$i]->value;

        $x = 0;
        if ($this->actionUpdate)
            $x++;
        if ($this->actionDelete)
            $x++;
        $actionEdit = $actions[$x++];
        $actionGenerateLetter = $actions[$x++];
        $actionSendMail = $actions[$x++];
        $actionConfirm = $actions[$x++];

        $interchangeStatusId = $columns[7]->control[$i]->value;

        $data = new GDate($columns[6]->control[$i]->value);
        $columns[6]->control[$i]->setValue($data->getDate(GDate::MASK_DATE_USER));

        //SÃ³ mostra se a pessoa tiver permissÃ£o de editar
        if (($actionGenerateLetter) || ($actionSendMail))
        {
            //($interchangeTypeId == INTERCHANGE_TYPE_SEND) && -- Retirada esta condicao de acordo com pedido no ticket #6221 - Item 12
            if ($statusId == INTERCHANGE_STATUS_LETTER_SENT) //quando for do tipo envio/doacao e o estado estiver como Carta enviada
            {
                $actionConfirm->enable();
            }
            else
            {
                $actionConfirm->disable();
            }

            //Se nao for do tipo Envio ou estado for >= confirmado, desabilita a acao de Gerar carta de envio
            if (($columns[9]->control[$i]->value != INTERCHANGE_TYPE_SEND) || ($interchangeStatusId >= INTERCHANGE_STATUS_CONFIRMED))
            {
                $actionGenerateLetter->disable();
            }
            else
            {
                $actionGenerateLetter->enable();
            }

            if (($columns[9]->control[$i]->value != INTERCHANGE_TYPE_RECEIPT)
                    || ($interchangeStatusId == INTERCHANGE_STATUS_GRATEFUL)
                    || ($interchangeStatusId == INTERCHANGE_STATUS_CONFIRMED))
            {
                $actionSendMail->disable();
            }
            else
            {
                $actionSendMail->enable();
            }
        }
    }

}

?>
