Bom dia.
Use o sc_date do SC e com a data final, use o date(‘w’) pra checar qual é o dia da semana. Daí é só usar o sc_date novamente pra adicionar 1 ou 2 dias.
 
      
    Bom dia.
Use o sc_date do SC e com a data final, use o date(‘w’) pra checar qual é o dia da semana. Daí é só usar o sc_date novamente pra adicionar 1 ou 2 dias.
Kleyber,
Não sei como verificar usando o sc_date do SC, sou iniciando em SC, como verifico se é sabado, domingo ou feriado…??? poderia montar uma condições onde tivesse os três elementos, inclusive os feriados que constam da função que passei? Desde já agradeço.
Gilson,
Eu sei muito bem como é isso. Então aqui vão algumas dicas:
1 - Leia bem o Webhelp que tem no teu SC e se não conseguires, tem Webhelp online, pra ver a questão do SC_DATE: http://www.scriptcase.com.br/docs/pt_br/manual_mp.htm#macros-scriptcase/macros-scriptcase
2 - A função date(‘w’) é uma função do PHP que retorna um número informando a que dia da semana se refere. Então 0 - Domingo, 1 - Segunda… e por aí vai. Dá uma olhada no Google sobre essa função. Se não tiveres um certo conhecimento de PHP procure pelas funções e vais descobrindo. Estou sem tempo no momento e se algum dos colegas puder criar um exemplo, seria bom. Senão assim que tiver um tempinho monto um exemplo pra você.
3 - Assista os videos do Scriptcase que existem no site da Netmake. Vai te ajudar bastante.
Kleyber,
Obrigado pela atenção tenho estudado muito sobre o SC, mas quando passamos a desenvolver fica dificil pela falta de conhecimento de PHP e SC.
Sou iniciante mas gosto de estudar. Tentei várias vezes antes de postar… Vou tentar novamente para ver  se consigo. Obrigado.
Gilson,
Assim que chegar em casa eu vejo se consigo montar um exemplo do que tu precisas e posto aqui.
Kleyber,
Fico muito grato pela ajuda… fico aguardando.
Show, Jean. Eu não faria melhor.
E ainda fala que não sabe programar nos webnar… kkkkk
Parabéns Jean.
kkkkkkkkkkk
Muito obrigado ao senhores Kleyber e Jean pelas valiosas ajudas e pelas funções…
Encontre também na net outra que estar dando certo, vou deixar aqui para os demais usuários do forum:
<?php
// Define o formato de saída da data
define('FR_DATA', 'd/m/Y');
$dtfinal = '09/02/2016';
// Teste
echo "O próximo dia util é : ", proDiaUtil($dtfinal); 
/*
 * proDiaUtil()
 * Retorna o próximo dia útil em relação a data.
 *
 * @data   -> Variável que recebe a data. 
 * 			Formato: DD/MM/AAAA
 */
function proDiaUtil($data)
{
	// Separa a data
	$dt = explode('/', $data);
	$dia = $dt[0];
	$mes = $dt[1];
	$ano = $dt[2];
	/*
	
	(1) Pega uma data de referência (variável), compara com o datas definidas pelo sistema (feriados e finais de semana) 
		e retorna a próxima data um dia útil
	(2) As datas do sistema são: [1] sábados; [2] domingos; [3] feriados fixos; [4] feriados veriáveis; [5] dias opcionais (ex: quarta de cinza)
	(3) Retorno o próximo/imediato dia útil.
	
	*/
	
	// 1 - verifica se a data referente é um final de semana (sábado ou domingo); 
	// se sábado acrescenta mais 1 dia e faz nova verificação
	// se domingo acrescenta mais 1 dia e faz nova verificação
	$fsem = date('D', mktime(0,0,0,$mes,$dia,$ano));
	$i = 1;
	switch($fsem)
	{
		case 'Sat': 
			return proDiaUtil(date(FR_DATA, mktime(0,0,0,$mes,$dia+$i,$ano))); 
		break;
		
		case 'Sun':
			return proDiaUtil(date(FR_DATA, mktime(0,0,0,$mes,$dia+$i,$ano)));
		break;
		
		default:
		    // 2 - verifica se a data referente é um feriado
			if(in_array($data, Feriados($ano))== true)
			{
				return proDiaUtil(date(FR_DATA, mktime(0,0,0,$mes,$dia+$i,$ano)));
			}
			else
			{
				// Retorna o dia útil
				return $data;
			}
		break;
	}		
}
/*
 * Feriados()
 * Gera um array com as datas dos feriados com referência no ano da data pesquisada.
 *
 * @ano   -> Variável que recebe o ano base para o cálculo;
 */
function Feriados($ano)
{	
	$feriados = array
	(
	  // Armazena feriados fíxos
	  
	  //Janeiro
	  date(FR_DATA, mktime(0,0,0,'01','01',$ano)), // 01/01 Ano novo
	  date(FR_DATA, mktime(0,0,0,'01','02',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'01','03',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'01','04',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'01','05',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'01','06',$ano)), //  Recesso
	  
	   //Março
	  date(FR_DATA, mktime(0,0,0,'03','19',$ano)), //  Dia de São José
	  
	   //Abril  
	  date(FR_DATA, mktime(0,0,0,'04','21',$ano)), // 21/04 Tiradentes
	  
	   //Maio
	  date(FR_DATA, mktime(0,0,0,'05','01',$ano)), // 01/05 Dia do trabalho
	  
	   //Junho
	  date(FR_DATA, mktime(0,0,0,'06','24',$ano)), //  São João
	  
	  //Julho
	  date(FR_DATA, mktime(0,0,0,'07','15',$ano)), //  N. Sa. Perpétuo Socorro
	  
	  //Setembro
	  date(FR_DATA, mktime(0,0,0,'09','07',$ano)), // 07/09 Independencia
	  date(FR_DATA, mktime(0,0,0,'09','28',$ano)), // Dia do Municipio de Acopiara
	  
	  //Outubro
	  date(FR_DATA, mktime(0,0,0,'10','04',$ano)), // São Francisco
	  date(FR_DATA, mktime(0,0,0,'10','12',$ano)), // 12/10 N. Senhora Aparecida
	  
	  
	  //Novembro
	  date(FR_DATA, mktime(0,0,0,'11','02',$ano)), // 02/11 Finados	  
	  date(FR_DATA, mktime(0,0,0,'11','15',$ano)), // 15/11 Proclamação
	  
	  //Dezembro
	  date(FR_DATA, mktime(0,0,0,'12','20',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'12','21',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'12','22',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'12','23',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'12','24',$ano)), // 24/12 Véspera de Natal
	  date(FR_DATA, mktime(0,0,0,'12','25',$ano)), // 25/12 Natal
	  date(FR_DATA, mktime(0,0,0,'12','26',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'12','27',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'12','28',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'12','29',$ano)), //  Recesso
	  date(FR_DATA, mktime(0,0,0,'12','30',$ano)), //  Recesso	  
	  date(FR_DATA, mktime(0,0,0,'12','31',$ano)), // 31/12 Véspera de Ano novo
	  
	  
	  // Armazena feriados variáveis
	  //flxFeriado($ano, 'pascoa', $r = 1), // Páscoa - Sempre domingo
	  flxFeriado($ano, 'carn_sab', $r = 1), // Carnaval - Sempre sábado
	  flxFeriado($ano, 'carn_dom', $r = 1), // Carnaval - Sempre domingo
	  flxFeriado($ano, 'carn_seg', $r = 1), // Carnaval - Segunda
	  flxFeriado($ano, 'carn_ter', $r = 1), // Carnaval - Terça
	  //strtoupper(flxFeriado($ano, 'carn_qua', $r = 1)), // Carnaval - Quarta de cinza
	  flxFeriado($ano, 'sant_sex', $r = 1), // Sexta Santa
	  flxFeriado($ano, 'corp_chr', $r = 1)  // Corpus Christi
	);
	return $feriados;
}
/*
 * flxFeriado()
 * Calcula os dias de feriados variáveis. Com base na páscoa.
 *
 * @ano   -> Variável que recebe o ano base para o cálculo;
 * @tipo  -> Tipo de dados
 * 			[carn_sab]: Sábado de carnaval;
 * 			[carn_dom]: Domingo de carnaval;
 * 			[carn_seg]: Segunda-feira de carnaval;
 * 			[carn_ter]: Terça-feira de carnaval;
 * 			[carn_qua]: Quarta-feira de carnaval;
 * 			[sant_sex]: Sexta-feira santa;
 * 			[corp_chr]: Corpus Christi;
 */
 
function flxFeriado($ano, $tipo = NULL)
{
	$a=explode("/", calPascoa($ano));
	switch($tipo)
	{
		case 'carn_sab': $d = $a[0]-50; break;
		case 'carn_dom': $d = $a[0]-49; break;
		case 'carn_seg': $d = $a[0]-48; break;
		case 'carn_ter': $d = $a[0]-47; break;
		case 'carn_qua': $d = $a[0]-46; break;
		case 'sant_sex': $d = $a[0]-2; break;
		case 'corp_chr': $d = $a[0]+60; break;
		case NULL: 
		case 'pascoa': $d = $a[0]; break;
	}
	return date(FR_DATA, mktime(0,0,0,$a[1],$d,$a[2])); break;
}
/*
 * calPascoa()
 * Calcula o domingo da pascoa. Base para todos os feriádos móveis.
 *
 * @ano   -> Variável que recebe o ano base para o cálculo ;
 */
 
function calPascoa($ano)
{
	$A = ($ano % 19);
    $B = (int)($ano / 100);
    $C = ($ano % 100);
    $D = (int)($B / 4);
    $E = ($B % 4);
    $F = (int)(($B + 8) / 25);
    $G = (int)(($B - $F + 1) / 3);
    $H = ((19 * $A + $B - $D - $G + 15) % 30);
    $I = (int)($C / 4);
    $K = ($C % 4);
    $L = ((32 + 2 * $E + 2 * $I - $H - $K) % 7);
    $M = (int)(($A + 11 * $H + 22 * $L) / 451);
    $P = (int)(($H + $L - 7 * $M + 114) / 31);
    $Q = (($H + $L - 7 * $M + 114) % 31) + 1;
    return date('d/m/Y', mktime(0,0,0,$P,$Q,$ano));
}
?>Que bom que resolveu, Gilson. E obrigado por compartilhar o código. Vai ser útil sim.
na verdade sou um exper em pesquisar…
achei o script na net, porém fiz algumas adaptações…
Jean chic.
Só tenho uma observação a fazer.
Tem um bug na sua assinatura onde você fecha a “]” não encontrei onde você abriu a chave.
Ai fiquei sem saber direito sua especialidade.
kkkkkkkkk
Caro [size=1em][font=Verdana]GCONTABIL2015 Todo código compartilhado é válido.
Obrigado por compartilhar.[/font][/size]
Obrigado a todos pela valiosa ajuda.
Acho que isso atende ao que você precisa.
Você pode copiar este código e executá-lo em uma blank para ajustar ao que precisa.
//DATA INICIAL
$data_1=‘2016-02-09’;
//INCREMENTO DE DIAS A DATA INICIAL
$add_dias=80;
//CONTADOR DE FERIADOS
$contador=0;
//ARRAY COM FERIADOS
$feriados_array = array(‘2016-01-01’, ‘2016-02-09’, ‘2016-03-25’, ‘2016-03-27’, ‘2016-04-25’,
‘2016-26-01’, ‘2016-05-26’, ‘2016-06-10’, ‘2016-06-13’);
//TRATAMENTO DA DATA FINAL
$data_2=date_create($data_1);
date_add($data_2,date_interval_create_from_date_string("$add_dias day"));
$data_2=date_format($data_2,“Y-m-d”);
//LAÇO DE REPETIÇÃO DE INCREMENTO E COMPARAÇÃO ENTRE DATAS
while($data_1 < $data_2){
if (in_array($data_1, $feriados_array)) { 
	$contador++;
}
//TRATAMENTO E INCREMENTO DA DATA INICIAL
$data_1=date_create($data_1);
date_add($data_1,date_interval_create_from_date_string("1 day"));
$data_1=date_format($data_1,"Y-m-d");
}
$data_2=date_create($data_2);
date_add($data_2,date_interval_create_from_date_string("-$contador day"));
$data_2=date_format($data_2,“Y-m-d”);
echo ‘DATA DO AGENDAMENTO = ‘.$data_1.’ - ‘.$contador.’ DIA
’;
echo ‘DATA DO AGENDAMENTO = ‘.$data_2.’
’;
encontrei esta rotina que permite retirar apenas os fins e semana:
//get current month for example
$beginday = “2019-10-01”;
$lastday  = “2019-10-31”;
$nr_work_days = getWorkingDays($beginday, $lastday);
echo $nr_work_days;
function getWorkingDays($startDate, $endDate)
{
$begin = strtotime($startDate);
$end   = strtotime($endDate);
if ($begin > $end) {
echo "startdate is in the future! 
";
    return 0;
} else {
    $no_days  = 0;
    $weekends = 0;
    while ($begin <= $end) {
        $no_days++; // no of days in the given interval
        $what_day = date("N", $begin);
        if ($what_day > 5) { // 6 and 7 are weekend days
            $weekends++;
        };
        $begin += 86400; // +1 day
    };
    $working_days = $no_days - $weekends;
    return $working_days;
}
}
Sou iniciante no Scriptcase, como posso usar essa função dentro do onload, testei no blank e funcionou. dentro do onload da um erro:Parse error: syntax error, unexpected ‘{’ in C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\SISBOB\form_spc_credito\form_spc_credito_apl.php on line 8014
Incluindo dias não úteis e feriados nacionais.