def var nr-lote-aux as dec no-undo. def var ix as int no-undo. /*mes*/ def var ix2 as int no-undo. /*numero de lote por mes*/ def var ix3 as int no-undo. /*numedo de docs por mes*/ def var ix4 as int no-undo. /*numero de internacao*/ FUNCTION documentoComInsumo RETURNS LOGICAL(): IF CAN-FIND(FIRST histor-movimen-insumo WHERE histor-movimen-insumo.cd-unidade = docto-monit-ans.cdn-unid AND histor-movimen-insumo.cd-unidade-prestadora = docto-monit-ans.cdn-unid-prestdra AND histor-movimen-insumo.cd-transacao = docto-monit-ans.cdn-trans AND histor-movimen-insumo.nr-serie-doc-original = docto-monit-ans.cod-ser-docto-origin AND histor-movimen-insumo.nr-doc-original = docto-monit-ans.num-docto-origin AND histor-movimen-insumo.nr-doc-sistema = docto-monit-ans.num-docto-sist AND histor-movimen-insumo.int-20 = docto-monit-ans.cdn-unid-prestdor-exec AND histor-movimen-insumo.int-21 = docto-monit-ans.cdn-prestdor-exec AND histor-movimen-insumo.ind-status = "I" AND NOT histor-movimen-insumo.log-3) or CAN-FIND(FIRST histor-movimen-insumo WHERE histor-movimen-insumo.cd-unidade = docto-monit-ans.cdn-unid AND histor-movimen-insumo.cd-unidade-prestadora = docto-monit-ans.cdn-unid-prestdra AND histor-movimen-insumo.cd-transacao = docto-monit-ans.cdn-trans AND histor-movimen-insumo.nr-serie-doc-original = docto-monit-ans.cod-ser-docto-origin AND histor-movimen-insumo.nr-doc-original = docto-monit-ans.num-docto-origin AND histor-movimen-insumo.nr-doc-sistema = docto-monit-ans.num-docto-sist AND histor-movimen-insumo.cd-unidade-prestadora = docto-monit-ans.cdn-unid-prestdor-exec AND histor-movimen-insumo.cd-prestador = docto-monit-ans.cdn-prestdor-exec AND histor-movimen-insumo.ind-status = "I" AND NOT histor-movimen-insumo.log-3) THEN RETURN YES. RETURN NO. END FUNCTION. output to c:\temp\meses2018.csv . put unformatted "competencia;quantidadelotesmes;quantidadedocshonorariomes;quantidadedeveriaserintenacao" skip. repeat: ix = ix + 1. ix2 = 0. ix3 = 0. ix4 = 0. FOR EACH lote-export-monit-ans WHERE lote-export-monit-ans.cod-mes-comptcia-reg = string(ix,"99") AND lote-export-monit-ans.cod-ano-comptcia-reg = string(2018,"9999") NO-LOCK: //valida codigo do lote de exportacao ASSIGN nr-lote-aux = DEC(lote-export-monit-ans.cod-lote-export) NO-ERROR. IF ERROR-STATUS:ERROR then do: MESSAGE 'error' VIEW-AS ALERT-BOX INFO BUTTONS OK. NEXT. end. //valida tipo movimento IF lote-export-monit-ans.num-livre-1 <> 0 /* Pagamento por Evento ou Procedimento */ AND lote-export-monit-ans.num-livre-1 <> 1 /* Fornecimento de medicamentos ou materiais */ THEN do: NEXT. end. //valida status do lote IF lote-export-monit-ans.cod-status-lote-ans <> "A" //Processado AND lote-export-monit-ans.cod-status-lote-ans <> "E" //Processado Parcialmente THEN do: NEXT. end. ix2 = ix2 + 1. FOR EACH docto-monit-ans WHERE docto-monit-ans.cod-lote-export = lote-export-monit-ans.cod-lote-export AND docto-monit-ans.ind-tip-reg = "1" // inclusoes AND docto-monit-ans.idi-tip-guia = 5 // HM AND docto-monit-ans.log-livre-1 = NO /* MOVIMENTO SEM ERROS / ACEITO */ AND docto-monit-ans.log-exclus = NO /* YES ao gerar as inclusoes */ NO-LOCK: ix3 = ix3 + 1. if documentoComInsumo() then ix4 = ix4 + 1. process events. end. end. /* FOR EACH lote-export-monit-ans*/ put unformatted "2018/"ix ";" ix2 ";" ix3 ";" ix4 skip. if ix = 12 then leave. end. output close.