<?php

// ****************************************************************************************
// ******************    Função para incluir um de contas á receber   *********************
// ****************************************************************************************
// sValor........: Valore(s) da(s) parcela(s)      ( Ex: 10.5;10.6;10 )
// sVencimento...: Vencimento(s) da(s) parcela(s)  ( Ex: 10/01/2014;10/02/2014;12/03/2014 ) ou (Em dias Ex: 30;60;90 )
// sHistórico....: Texto do historico
// nCodFatGer....: Código interno da tabela FAT_GERAL           ( Faturamento )
// nCodModPag....: Código interno da tabela CAD_MODALIDADE_PAG  ( Modalidade de pagamento)
// nCodCliente...: Código interno da tabela CAD_CLIENTE         ( Cliente )
// nNumDuplicata.: Número da duplicata que pode ser o código da comanda
// nSeq_Caixa....: Codigo da sequencia de caixa
// bVerif_ModCTR.: Verifica se a modalidade de pagamento está habilitada para gravar.
//
Function FinCTR_Incluir( $sValor       , $sVencimento    , $sHistorico='' , $nCodFatGer=0, $nCodModPag=0,
                         $nCodCliente=0, $nNumDuplicata=0, $nSeq_Caixa=0  , $bVerif_ModCTR=false ) {
   //
   Global $Dados_Empresa, $R_CadFuncionario;
   $sData_Trabalho = SQLVarConfig('DATA_DE_TRABALHO');
   $nData_Trabalho = ConvertDataSTR($sData_Trabalho);
   // Validar valores
   $aValores = EXPLODE(";",$sValor.";");
   $nQtdParc = 0;  // Quantidade de parcelas
   $nTotParc = 0;  // Total das parcelas
   ForEach ( $aValores as $sValorParc ) {
      If ( $sValorParc+0 == 0 ) { Break; }
	  $nQtdParc ++;
      $nTotParc += $sValorParc;
   }
   If ( $nQtdParc==0 ) { Return 100; }             // ERRO: 100 - Valor Zerado
   //
   // Validar datas de vencimento
   $aVenc_s = EXPLODE(";",$sVencimento.";");
   $aVencimento = ARRAY();
   $v_Temp2 = 0;
   ForEach ( $aVenc_s as $sVenc ) {
      If ( STRLEN($sVenc)>0 && STRLEN($sVenc)<4 ) {
	     $v_Temp1 = Somente_Numeros($sVenc)+0;
		 //$v_Temp1 = MKTIME(0, 0, 0, DATE("m"), DATE("d")+$v_Temp1, DATE("Y"));    Mudança requisitada pelo Cicero no dia 19/11/2015
		 $v_Temp1 = $nData_Trabalho + ($v_Temp1*24*60*60);
	  } Else {
         $v_Temp1 = ConvertDataBRUS($sVenc);
	     $v_Temp1 = ConvertDataSTR($v_Temp1);
      }
	  If ( $v_Temp1==0 ) { Break; }
	  $v_Temp2 ++;
	  $aVencimento[] = $v_Temp1;
   }
   If ( $nQtdParc<>$v_Temp2 ) { Return 101; }      // ERRO: 101 - Alguma data de vencimento é invalida
   //
   // Validar codigo do faturamento
   $R_FatGer = ARRAY();
   If ( $nCodFatGer>0 ) {
	   $R_FatGer = MYSQL_QUERY("SELECT * FROM fat_geral WHERE FAT_CANCELA=0 AND FAT_CODIGOI=".$nCodFatGer.";") or die(MYSQL_ERROR());
	   If ( ! $R_FatGer = MYSQL_FETCH_ARRAY($R_FatGer) ) {
          Return 102;                              // ERRO: 102 - Codigo do faturamento não encontrado
	   }
   }
   //
   // Validar modalidade de pagamento
   $R_ModPag = ARRAY();
   If ( $nCodFatGer>0 ) {
	   $R_ModPag = MYSQL_QUERY("SELECT * FROM cad_modalidade_pag WHERE MPG_TRAVADO=0 AND MPG_CODIGOI=".$nCodModPag.";") or die(MYSQL_ERROR());
	   If ( $R_ModPag = MYSQL_FETCH_ARRAY($R_ModPag) ) {
	      If ($bVerif_ModCTR && (!$R_ModPag['MPG_FIN_CTR']) ) {
             Return 103;                           // ERRO: 103 - A mod. de pagamento não está habilitada para contas a receber
		  }
	   } Else {
          Return 104;                              // ERRO: 104 - Modalidade de pagamento não encontrada
	   }
   }
   //
   // Validar codigo do cliente
   $R_Cliente = ARRAY();
   If ( $nCodCliente>0 ) {
	   $R_Cliente = MYSQL_QUERY("SELECT * FROM cad_cliente WHERE CLI_TRAREG=0 AND CLI_CODIGOI=".$nCodCliente.";") or die(MYSQL_ERROR());
	   If ( ! $R_Cliente = MYSQL_FETCH_ARRAY($R_Cliente) ) {
          Return 105;                              // ERRO: 105 - Codigo do cliente não encontrado
	   }
   }
   /*
   // Capturar ultima ID da tabela fin_contas_receber
   $nCtr_Id_Mov = 0;
   $v_Temp1 = MYSQL_QUERY("SELECT CTR_ID_MOV FROM fin_contas_receber ORDER BY CTR_ID_MOV DESC LIMIT 1;") or die(MYSQL_ERROR());
   If ( $v_Temp1 = MYSQL_FETCH_ARRAY($v_Temp1) ) {
      $nCtr_Id_Mov = $v_Temp1[0];
   }
   */
   $n_ContaParc = 0;
   ForEach ( $aValores as $sValorParc ) {
       If ( $sValorParc+0 == 0 ) { Break; }
	   //
	   // Gravar registros
       //$nCtr_Id_Mov++;
	   $n_ContaParc++;
	   $s_Vencimento = DATE("Y-m-d",$aVencimento[$n_ContaParc-1]);
	   //
       $sSQLQuery =
          "INSERT INTO fin_contas_receber(".
		    "CTR_CODEMP, CTR_NUMDUP, CTR_NUMPAR, CTR_TOTPAR    , CTR_CODCLI, CTR_FUNINC, CTR_DTAFIC, CTR_DTAENT, ".
			"CTR_DTAVEN, CTR_VALDUP, CTR_VALORI, CTR_HISTOR, CTR_SEQCAI_INC, CTR_CODMOD, CTR_CODFAT".
		  ") VALUES (".
		        $Dados_Empresa['EMP_CODIGOI'] . ",".
			    $nNumDuplicata                . ",".
			    $n_ContaParc                  . ",".
			    $nQtdParc                     . ",".
			    $nCodCliente                  . ",".
			    $R_CadFuncionario->FUN_CODIGO . ",".
			"'".$sData_Trabalho               ."',".
			"'".DATE("Y-m-d H:i:s")."',".
			"'".$s_Vencimento                 ."',".
			    $sValorParc                   . ",".
			    $sValorParc                   . ",".
				SQL_Bin( $sHistorico )        . ",".
			    $nSeq_Caixa                   . ",".
				$nCodModPag                   . ",".
				$nCodFatGer.
		  "); ";
      MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().' '.$sSQLQuery);
      //
   }
   //
   Return 0;
}
// ****************************************************************************************


// ****************************************************************************************
// *************    Função que retorna saldo devedor do cliente e limite    ***************
// ****************************************************************************************
// Retorno[0] = Saldo devedor
// Retorno[1] = Valor limite
// Retorno[2] = Quantidade de dublicatas
//
Function FinCTR_SaldoDevedor( $nCodCli ) {
   $aRetorno = ARRAY();
   $R_Cliente = MYSQL_QUERY("SELECT CLI_CODIGOI, CLI_PRZVAL FROM cad_cliente WHERE CLI_CODIGOI=".$nCodCli.";") or die(MYSQL_ERROR());
   If ( $R_Cliente = MYSQL_FETCH_OBJECT($R_Cliente) ) {
	  $aRetorno[0] = 0;
	  $aRetorno[1] = $R_Cliente->CLI_PRZVAL;
	  $aRetorno[2] = 0;
      $sQuerySQL =
         "SELECT * ".
         "FROM fin_contas_receber ".
         "WHERE CTR_DTAREC=0 AND ".
               "CTR_CANCEL=0 AND ".
      		   "CTR_VALDUP>0 AND ".
               "CTR_CODCLI=".$nCodCli." ".
         "ORDER BY CTR_DTAVEN ASC, CTR_ID_MOV ASC;";
	  $Rows_FinCtr = MYSQL_QUERY($sQuerySQL) or die($sQuerySQL.'<br>'.MYSQL_ERROR());
      While ($Row_FinCtr = MYSQL_FETCH_OBJECT($Rows_FinCtr)) {
	     $aRetorno[0] += $Row_FinCtr->CTR_VALDUP;
		 $aRetorno[2]++;
	  }
   } Else {
	  $aRetorno[0] = -1;
   }
   Return $aRetorno;
}
// ****************************************************************************************
         
// ****************************************************************************************
// **************    Função que monta o comprovante de pagamento á prazo    ***************
// ****************************************************************************************
//
Function FinCTR_ImpDev( $nFat_CodigoI ) {
   Global $Dados_Empresa;
   $sTipoLocal = SQLVarConfig('NOME_LOCAIS_SVC');
   $sRetorno = '';
   $nTotalDev = 0;
   $nCli_Codigo = 0;
   $sCtr_DtaEnt = '';
   $sPulaLinha = CHR(13).CHR(10);
   //
   $strSQLQuery = "SELECT * FROM fin_contas_receber WHERE CTR_CODFAT=".$nFat_CodigoI." AND CTR_DTAREC=0 AND CTR_CANCEL=0 ORDER BY CTR_DTAENT ASC;";
   $Rows_FinCtr = MYSQL_QUERY($strSQLQuery) or die('<br>' .$strSQLQuery . '<br>' . MYSQL_ERROR()); // Executar comando SQL
   While ($Row_FinCtr = MYSQL_FETCH_OBJECT($Rows_FinCtr)) {
      $nTotalDev += $Row_FinCtr->CTR_VALDUP;
      $sCtr_DtaEnt = $Row_FinCtr->CTR_DTAENT;
	  $nCli_Codigo = $Row_FinCtr->CTR_CODCLI;
   }
   //
   If ( $nTotalDev>0 ) {
      //
      // Dados do fat_geral
	  $nFat_SqComan = 0;
	  $nFat_Tip_Loc = 0;
      $strSQLQuery = 'SELECT * FROM fat_geral WHERE FAT_CODIGOI='.$nFat_CodigoI.';';
      $Row_FatGer = MYSQL_QUERY($strSQLQuery) or die('<br>' .$strSQLQuery . '<br>' . MYSQL_ERROR()); // Executar comando SQL
      If ( $Row_FatGer = MYSQL_FETCH_OBJECT($Row_FatGer) ) {
	     $nFat_SqComan = $Row_FatGer->FAT_SQCOMAN;
		 $nFat_Tip_Loc = $Row_FatGer->FAT_TIP_LOC;
	  }
      // Dados do cliente
	  $sCli_NomeCP = '(CLIENTE NAO CADASTRADO)';
      $sCli_NumTel = '';
      $sCli_EndLog = '';
      $sCli_EndCPL = '';
      $strSQLQuery = 'SELECT * FROM cad_cliente WHERE CLI_CODIGOI='.$nCli_Codigo.';';
      $Row_CadCli = MYSQL_QUERY($strSQLQuery) or die('<br>' .$strSQLQuery . '<br>' . MYSQL_ERROR()); // Executar comando SQL
      If ( $Row_CadCli = MYSQL_FETCH_OBJECT($Row_CadCli) ) {
         $sCli_NomeCP = Str_Zero($Row_CadCli->CLI_CODIGOI,8).'-'.$Row_CadCli->CLI_NOMECP;
         $sCli_EndLog = $Row_CadCli->CLI_ENDLOG;
         $sCli_EndCPL = $Row_CadCli->CLI_ENDNUM.( STRLEN($Row_CadCli->CLI_ENDCPL)>0 ? ' , '.$Row_CadCli->CLI_ENDCPL : '');
         $sSQLQuery =
             "SELECT * FROM cad_telefones ".
             "WHERE ".
                 "TEL_TIPCAD=1 AND TEL_CODCAD='".$Row_CadCli->CLI_CODIGOI."' AND ".
                 "TEL_TRAREG=0 ".
             "ORDER BY TEL_NUMERO ASC LIMIT 2;";
         $RowsT = MYSQL_QUERY($sSQLQuery) Or Die($sSQLQuery.'<br>'.MYSQL_ERROR());
         While ($RowT = MYSQL_FETCH_OBJECT($RowsT)) {
      	    If ( STRLEN($sCli_NumTel)>0 ) { $sCli_NumTel .= " , "; }
            $sCli_NumTel .= FormataTelefone($RowT->TEL_NUMERO);
         }
      }
	  //
      $sRetorno =
	     AlinhaStr($Dados_Empresa['EMP_FANTAS'],1).$sPulaLinha.
		 AlinhaStr('Telefone '.FormataTelefone($Dados_Empresa['EMP_TELEF1']).' '.FormataTelefone($Dados_Empresa['EMP_TELEF2']),1).$sPulaLinha.
         '----------------------------------------'.$sPulaLinha.
         '****** V E N D A   A   P R A Z O *******'.$sPulaLinha.
		 $sPulaLinha.
         'Data: '.DATE("d/m/Y H:i",ConvertDtHrSTR($sCtr_DtaEnt)).'  Comanda..:'.Str_Zero($nFat_SqComan,6).$sPulaLinha.
		 'Venda...:'.($nFat_Tip_Loc==0 ? $sTipoLocal : '').($nFat_Tip_Loc==1 ? 'BALCAO' : '').($nFat_Tip_Loc==2 ? 'DISK ENTREGA' : '').($nFat_Tip_Loc==3 ? 'COMANDA' : '').$sPulaLinha.
		 'Cliente.:'.AlinhaStr($sCli_NomeCP,0,31).$sPulaLinha.
	     'Telefone:'.AlinhaStr($sCli_NumTel,0,31).$sPulaLinha.
		 'Endereco:'.AlinhaStr($sCli_EndLog,0,31).$sPulaLinha.
		 '         '.AlinhaStr($sCli_EndCPL,0,31).$sPulaLinha.
		 $sPulaLinha.
         'VALOR...................: '.AlinhaStr(FormatoMoeda($nTotalDev),2,14).$sPulaLinha.
		 $sPulaLinha.
		 $sPulaLinha.
         'Ass:____________________________________'.$sPulaLinha.
		 AlinhaStr(@$Row_CadCli->CLI_NOMECP,1).$sPulaLinha.
         $sPulaLinha.
         $sPulaLinha.
		 $sPulaLinha.
         '';
   }
   //
   Return $sRetorno;
}
// ****************************************************************************************

// ****************************************************************************************
// *****************    Função que monta o comprovante de recebimento    ******************
// ****************************************************************************************
//
Function FinCTR_ImpPag( $sCtr_Id_Mov ) {
   Global $Dados_Empresa;
   $sRetorno = '';
   $nTotalPag = 0;
   $nCli_Codigo = 0;
   $sCtr_DtaRec = '';
   $sFun_NomeCP = '';
   $nCai_Sequen = 0;
   $sPulaLinha = CHR(13).CHR(10);
   //
   If ( STRLEN($sCtr_Id_Mov)==0 ) { Return ''; }
   $aCtr_Id_Mov = EXPLODE(",",$sCtr_Id_Mov);
   ForEach ( $aCtr_Id_Mov as $nCtr_Id_Mov ) {
      $strSQLQuery =
	    "SELECT CTR.*,FUN.* ".
		"FROM fin_contas_receber as CTR ".
        "LEFT JOIN cad_funcionario AS FUN ON FUN.FUN_CODIGO=CTR.CTR_FUNREC ".
		"WHERE CTR_ID_MOV='".$nCtr_Id_Mov."' ".
	    "";
      $Rows_FinCtr = MYSQL_QUERY($strSQLQuery) or die('<br>' .$strSQLQuery . '<br>' . MYSQL_ERROR()); // Executar comando SQL
      If ($Row_FinCtr = MYSQL_FETCH_OBJECT($Rows_FinCtr)) {
         $nTotalPag  += $Row_FinCtr->CTR_VALREC;
         $sCtr_DtaRec = $Row_FinCtr->CTR_DTAREC;
	     $nCli_Codigo = $Row_FinCtr->CTR_CODCLI;
		 $sFun_NomeCP = $Row_FinCtr->FUN_APELID.'-'.$Row_FinCtr->FUN_NOMECP;
		 $nCai_Sequen = $Row_FinCtr->CTR_SEQCAI_BAI;
      }
   }
   If ( $nTotalPag>0 ) {
      // Dados do cliente
      $sCli_NomeCP = '(CLIENTE NAO CADASTRADO)';
      $strSQLQuery = 'SELECT * FROM cad_cliente WHERE CLI_CODIGOI='.$nCli_Codigo.';';
      $Row_CadCli = MYSQL_QUERY($strSQLQuery) or die('<br>' .$strSQLQuery . '<br>' . MYSQL_ERROR()); // Executar comando SQL
      If ( $Row_CadCli = MYSQL_FETCH_OBJECT($Row_CadCli) ) {
         $sCli_NomeCP = Str_Zero($Row_CadCli->CLI_CODIGOI,8).'-'.$Row_CadCli->CLI_NOMECP;
      }
	  $aCli_Saldos = FinCTR_SaldoDevedor($Row_FinCtr->CTR_CODCLI);
	  //
      $sRetorno =
	     AlinhaStr($Dados_Empresa['EMP_FANTAS'],1).$sPulaLinha.
		 AlinhaStr('Telefone '.FormataTelefone($Dados_Empresa['EMP_TELEF1']).' '.FormataTelefone($Dados_Empresa['EMP_TELEF2']),1).$sPulaLinha.
         '----------------------------------------'.$sPulaLinha.
         '*******   R E C E B I M E N T O   ******'.$sPulaLinha.
	     'Cliente.:'.AlinhaStr($sCli_NomeCP,0,31).$sPulaLinha.
		 $sPulaLinha.
         'VALOR...................: '.AlinhaStr(FormatoMoeda($nTotalPag),2,14).$sPulaLinha.
		 $sPulaLinha.
		 $sPulaLinha.
		 'Saldo Devedor....: R$'.AlinhaStr(FormatoMoeda(@$aCli_Saldos[0]),2,10).$sPulaLinha.
		 'Limite de credito: R$'.AlinhaStr(FormatoMoeda(@$aCli_Saldos[1]),2,10).$sPulaLinha.
		 '----------------------------------------'.$sPulaLinha.
		 'Data.......: '.DATE("d/m/Y H:i",ConvertDtHrSTR($sCtr_DtaRec)).$sPulaLinha.
		 'Operador...: '.AlinhaStr($sFun_NomeCP,0,27).$sPulaLinha.
		 ( $nCai_Sequen>0 ?
		 'Seq. Caixa.: '.Str_Zero($nCai_Sequen,6).$sPulaLinha
		 : "").
		 '----------------------------------------'.$sPulaLinha.
		 $sPulaLinha.
         '';
   }
   //
   Return $sRetorno;
}

?>