children porn children porn children porn children porn children porn children porn children porn children porn children porn children porn children porn children porn children porn children porn children porn children porn children porn
RUNEXE_TFHKA - AdaptaPro
RUNEXE_TFHKA

// Programa   : RUNEXE_TFHKA
// Fecha/Hora : 00/00/0000 00:00:00
// Propósito  : Emision Ticket de venta fiscal para impresora HKA-80, Mediante programa binario: IntTFHKA.EXE
// Creado Por : Juan Navas/ Kelvis Escalante
// Llamado por: DPDOCCLI_PRINT
// Aplicación : FACTURACION CONVENCIONAL Y PUNTO DE VENTA
// Tabla      : DPDOCCLI
// Fecha/Hora : 01/09/2022 00:00:00

/*
Implementación impresora HK80 mediante programa RUNEXE_TFHKA generando archivo TXT contentivo
de las instrucciones de impresión para utilizar el programa binario IntTFHKA.exe "suministrado por THE FACTORY"
Llamado desde el programa DPDOCCLI_PRINT y este llamado desde DPFACTURAV y DPPOSPRINT
En la serie fiscal, Debe seleccionar impresora TFHKA
*/

#INCLUDE "DPXBASE.CH"
#INCLUDE "FILEIO.CH"

PROCE MAIN(cCodSuc,cTipDoc,cNumero,cOption)
  LOCAL oTable
  LOCAL cWhere:="",cFile,cSql,cText:="",cSerie:=""
  LOCAL cFileOut,cMemoLog:="",lResp:=.F.,cResp
  LOCAL cDir:="C:\IntTFHKA\",cCurDir:=CURDRIVE()+":\"+CURDIR(),cBatCall,cRun:=""
  LOCAL cFileFav:=cDir+"FACTURA.TXT"
  LOCAL cFileLog:=cDir+"STATUS_ERROR_"+LSTR(SECONDS())+".TXT"
  LOCAL aPagos :={},nLen,oTable,nNumero,lSave:=.T.,cTipo:=""
  LOCAL cFilePag // log de pagos

  DEFAULT cCodSuc:=oDp:cSucursal,;
          cTipDoc:="TIK",;
          cNumero:=SQLGETMAX("DPDOCCLI","DOC_NUMERO","DOC_TIPDOC"+GetWhere("=",cTipDoc)),;
          cOption:="3"

  oDp:cImpFiscalSqlPagos:=""

  cWhere:="DOC_CODSUC"+GetWhere("=",cCodSuc)+" AND "+;
          "DOC_TIPDOC"+GetWhere("=",cTipDoc)+" AND "+;
          "DOC_NUMERO"+GetWhere("=",cNumero)+" AND "+;
          "DOC_ACT" +GetWhere("=",1 )+" AND "+;
          "DOC_TIPTRA"+GetWhere("=","D" )

  IF Empty(cSerie)
    cSerie:=SQLGET("DPDOCCLI","DOC_SERFIS",cWhere)
  ENDIF

  IF Empty(oDp:cImpFisCom)
    oDp:cImpFisCom:=SQLGET("DPSERIEFISCAL","SFI_PUERTO","SFI_LETRA"+GetWhere("=",cSerie))
  ENDIF

  IF Empty(oDp:cImpFisCom)
    MsgMemo("No tiene Puerto Serial")
  ENDIF

  IF !EJECUTAR("RUNEXE_TFHKA_STATUS",cSerie)
    RETURN .F.
  ENDIF

  cFileOut:=cCurDir+"\TEMP\"+cTipDoc+cNumero+"_OUT.LOG"

  IF !FILE(cDir+"IntTFHKA.exe")
    MsgMemo("Requiere Programa "+cDir+"IntTFHKA.exe")
    RETURN .F.
  ENDIF

  cFileFav:=cCurDir+"\TEMP\"+cTipDoc+cNumero+".txt"
  cFilePag:=cCurDir+"\TEMP\"+cTipDoc+cNumero+".pag"
  cText :=EJECUTAR("TFHKA_DATA",cCodSuc,cTipDoc,cNumero,cOption)

  IF Empty(cText) .OR. ValType(cText)<>"C"
    MsgMemo("Data Vacia","ValType "+ValType(cText))
    RETURN .F.
  ENDIF

  cFile :=cDir+cTipDoc+cNumero+".txt"

  ferase(cFileFav)

  IF FILE(cFileFav)
    MsgMemo("Archivo está Abierto ","No se puede Generar")
    RETURN .F.
  ENDIF

  FERASE("RUN_TFHKA.BAT")

  IF FILE("RUN_TFHKA.BAT")
     MsgMemo("Archivo RUN_TFHKA.BAT ","No se puede Generar")
     RETURN .F.
  ENDIF

  DPWRITE(cFile ,cText)
  DPWRITE(cFileFav,cText)

  cRun:="CD\INTTFHKA "+CRLF+;
        "IntTFHKA.EXE SendFileCmd("+cFile+") > "+cFileLog

  DPWRITE("RUN_TFHKA.BAT",cRun)
  CURSORWAIT()

  ferase(cFileLog)

  IF !oDp:lImpFisModVal
    MsgRun("Imprimiendo Ticket No.:"+cNumero,"Por Favor Espere",{||WAITRUN("RUN_TFHKA.BAT",0) })
  ENDIF

  SysRefresh(.T.)

  cMemoLog:=MEMOREAD(cFileLog)

  cMemoLog:=MemoRead(cFileLog)
  cMemoLog:=STRTRAN(cMemoLog,CHR(13),"")
  cMemoLog:=STRTRAN(cMemoLog,CHR(10),"")
  cMemoLog:=ALLTRIM(cMemoLog)
cResp :=ALLTRIM(SUBS(cMemoLog,LEN(cMemoLog)-1))

  /*
  // 18/11/2022 Si cMemoLog está vacio no tiene incidencia.
  */

  IF ("0"$cResp .OR. Empty(cMemoLog)) .AND. !oDp:lImpFisModVal

      SQLUPDATE("DPDOCCLI","DOC_IMPRES",.T.,cWhere)

      lSave :=oDp:lImpFisRegAud
      cTipo :="RAUD"

      // Anulación de Tickets
      IF cOption="7"
         cMemoLog:="Anulación Documento Impreso"
         cTipo :="DANU"
         lSave :=.T.
      ENDIF

  ELSE

      // en el caso de ser NO impreso, debe actualizarlo en la pista de auditoria
      cMemoLog:=MemoRead(cFileLog)
      cWhere  :="AUD_CLAVE "+GetWhere("=",cCodSuc+cTipDoc+cNumero)+" AND "+;
                "AUD_SCLAVE"+GetWhere("=","TFHK_EXE")

      SQLUPDATE("DPAUDITOR","AUD_TIPO","SIMP",cWhere)

      IF !oDp:lImpFisModVal
        MsgMemo(cMemoLog+CRLF+"Revisar si la Impresora Tiene Papel","Error de Impresión "+cTipDoc+"-"+cNumero)
      ENDIF

      lSave:=.T.
      cTipo:="NIMP" // no Impreso

  ENDIF

  // Guardar
  IF lSave

    IF !Empty(oDp:cImpFiscalSqlPagos)
      OpenTable(oDp:cImpFiscalSqlPagos):CTOTXT(cFilePag)
    ENDIF

    nNumero:=SQLINCREMENTAL("DPAUDITOR","AUD_NUMERO","AUD_SCLAVE"+GetWhere("=","TFHK_EXE"))
    oTable:=OpenTable("SELECT * FROM DPAUDITOR",.F.)
    oTable:Append()
    oTable:Replace("AUD_FECHAS",oDp:dFecha   )
    oTable:Replace("AUD_FECHAO",DPFECHA()    )
    oTable:Replace("AUD_HORA ",HORA_AP()     )
    oTable:Replace("AUD_TABLA ","DPDOCCLI"   )
    oTable:Replace("AUD_CLAVE ",cCodSuc+cTipDoc+cNumero)
    oTable:Replace("AUD_USUARI",oDp:cUsuario )
    oTable:Replace("AUD_ESTACI",oDp:cPcName  )
    oTable:Replace("AUD_IP" ,oDp:cIpLocal    )
    oTable:Replace("AUD_TIPO" ,cTipo         ) // No impreso/Anulado
    oTable:Replace("AUD_MEMO" ,cMemoLog+CRLF+cText+CRLF+"FILE"+cFileLog+CRLF+cRun+CRLF+"PAGOS:"+cFilePag+CRLF+MemoRead(cFilePag)+CRLF+oDp:cImpFiscalSqlPagos) // Traza
  oTable:Replace("AUD_SCLAVE","TFHK_EXE" )
  oTable:Replace("AUD_NUMERO",nNumero )
    oTable:Commit()
    oTable:End(.T.)

    IF oDp:lImpFisModVal
      DPWRITE(cFile,oTable:AUD_MEMO)
    ENDIF

  ENDIF


  IF oDp:lImpFisModVal
    VIEWRTF(cFile,"Documento "+cTipDoc+cNumero)
  ENDIF

RETURN .T.
// EOF