<?php
class iComprobanteVenta
{
    public static function getSerieNumero( $IdTipoDocumento )
    {
        $a_lst = array( "error" => false );

        myUser::getUser()->validar_session();
        
        //SE VALIDA QUE EL ULTIMO DOCUMENTO ESTE MARCADO CON IMPRESION FISICA
        $o_GSS_SucursalDocumentoFN = new GSS_SucursalDocumentoFN();
        $o_GSS_SucursalDocumentoFN->setIdCompania( myUser::getUser()->getIdBusiness() );
        if( myUser::getUser()->getIdSucursal() )
        {
            $o_GSS_SucursalDocumentoFN->setIdSucursal( myUser::getUser()->getIdSucursal() );
        }
        $o_GSS_SucursalDocumentoFN->setIdTipoDocumento( $IdTipoDocumento );
        $a_GSS_SucursalDocumento = $o_GSS_SucursalDocumentoFN->select();

        //ahora el procedimiento cambia para recuperar serie - numero [PUNO - JULIACA]
        $o_GSS_UsuarioSucuDocumentoFN = new GSS_UsuarioSucuDocumentoFN();
        $o_GSS_UsuarioSucuDocumentoFN->setIdusuario( myUser::getUser()->getUserId() );
        $o_GSS_UsuarioSucuDocumentoFN->setIdCompania( myUser::getUser()->getIdBusiness() );
        $a_GSS_UsuarioSucuDocumento = $o_GSS_UsuarioSucuDocumentoFN->select();

        $o_GSS_SucursalDocumentoBN = null;
        foreach ( $a_GSS_UsuarioSucuDocumento as $key => $o_GSS_UsuarioSucuDocumentoBN ) 
        {
            $o_GSS_SucursalDocumentoFN = new GSS_SucursalDocumentoFN();
            $o_GSS_SucursalDocumentoBN = $o_GSS_SucursalDocumentoFN->selectByPK( $o_GSS_UsuarioSucuDocumentoBN->getIdSucursalDocumento() );

            if( $o_GSS_SucursalDocumentoBN->getIdTipoDocumento() == $IdTipoDocumento )
            {
                break; //se interrumpe el bucle por que ya se encontro el tipo de documento que se buscaba
            }
        }

        if( $o_GSS_SucursalDocumentoBN )
        {
            //$o_GSS_SucursalDocumentoBN = $a_GSS_SucursalDocumento[0];

            $o_VTA_TipoDocumentoFN = new VTA_TipoDocumentoFN();
            $o_VTA_TipoDocumentoBN = $o_VTA_TipoDocumentoFN->selectByPK( $IdTipoDocumento );
            $s_TipoCod = "";
            if( $o_VTA_TipoDocumentoBN )
            {
                $s_TipoCod = $o_VTA_TipoDocumentoBN->getTipoDocumentoCod();
            }

            $s_Serie  = str_pad( $o_GSS_SucursalDocumentoBN->getSerieFormato(), 4, "0", STR_PAD_LEFT );
            $s_Numero = str_pad( ( $o_GSS_SucursalDocumentoBN->getNumeroActual() + 1 ), 8, "0", STR_PAD_LEFT );
            
            $a_lst = array( "Result" => true, "Serie" => $s_Serie, "Numero" => $s_Numero, "IdTipoDocumento" => $IdTipoDocumento, "TipoDocumentoCod" => $s_TipoCod );
        }
        else
        {
            throw new Exception( "No encontro Tipo de Documentos asociados a la Compañia." );
        }

        return $a_lst;
    }
}