Histórico da Página
...
Producto |
| ||||
---|---|---|---|---|---|
Línea de producto: |
| ||||
Segmento: |
| ||||
Módulo: | SIGACON, SIGAFAT, SIGAFINSIGACOM | ||||
Función: |
| ||||
País: | PARAGUAY | ||||
Ticket: | 21039076 | ||||
Requisito/Story/Issue (informe el requisito vinculado): | DMICAS-81 |
...
Totvs custom tabs box | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
|
...
- RUC genérico con permiso para duplicar:
- 44444401-7 = Importes consolidados
- 66666601-6 = Clientes exportación
- 77777701-0 = Agentes diplomáticos
- 88888801-5 = Clientes exterior
- 99999901-0 = Proveedores exterior
- Permite duplicar el mismo código con diferentes tiendas.
- El RUC se puede escribir con o sin guion, pero siempre regresará con el guion después de la validación.
- Esta actualización ya no permitirá otros documentos en el campo RUC. (Solo RUC con DV correcto)
Se debe tener modificado o diccinário Diccinário de datos SX3, se deben hacerlo desde el configurador SIGACFG (Entorno | Archivos| Base de datos):(SX3)
Código Pacote: 015072.
Pacote: MI - DMICAS-81 - VALIDAR RUC DUPLICADOS
...
Card documentos Informacao Es necesario realizar la actualización del diccionario por medio del UPDDISTR con el paquete de diccionario de este requisito. Titulo ¡IMPORTANTE!
05. ASUNTOS RELACIONADOS
En Paraguay, está disponible una API para la búsqueda de RUC.
https://turuc.com.py/swagger-ui/index.html#/rest-contribuyente/getContribuyenteWithPath
Programa ADVPL para consumo de API, configuración de usuario.
#INCLUDE"PROTHEUS.CH"
#INCLUDE"FWBROWSE.CH"//Dicionario SX3
//X3_CAMPO (A1_CGC e A2_CGC)
//X3_VLDUSER = APIRUCPY()
UserFunctionAPIRUCPY(cRUC)
LocalcVar :=ReadVar()
LocaloMod :=FWModelActive()
LocaloRest:=FwRest():New("https://turuc.com.py/api/contribuyente")
LocaloJson:=JsonObject():New()
LocalaHead:= {'accept: */*'}
LocalcRest:=""
LocalcRed :=""
LocalcNom :=""
LocallRet :=.F.
DefaultcRUC:= &(cVar)
oRest:SetPath("?ruc="+Trim(cRUC))
FWMsgRun(Nil,{|| lRet:=oRest:Get(aHead)},Nil,oRest:CHOST)
IflRet//Achou
cRest:=DecodeUtf8(oRest:GetResult())
If ! Empty(cRest) .And.Empty(oJson:fromJson(cRest))
//oJson["data"]["ruc"] = CODIGO + DV
//oJson["data"]["estado"] = A1_ATIVO
//oJson["data"]["esPersonaJuridica"] = A1_PESSOA
cNom:=oJson["data"]["razonSocial"]
If (", ")$(cNom)
cRed:=AllTrim(SubStr(cNom,At(", ",cNom)+1,Len(cNom)))
Else
cRed:=AllTrim(SubStr(cNom,1,At(" ",cNom)))
Endif
IfcVar=="M->A2_CGC"//Proveedor
iif(Empty(oMod),M->A2_NOME :=cNom,FWFldPut("A2_NOME", cNom))
iif(Empty(oMod),M->A2_NREDUZ:=cRed,FWFldPut("A2_NREDUZ",cRed))
ElseIfcVar=="M->A1_CGC"//Cliente
iif(Empty(oMod),M->A1_NOME :=cNom,FWFldPut("A1_NOME", cNom))
iif(Empty(oMod),M->A1_NREDUZ:=cRed,FWFldPut("A1_NREDUZ",cRed))
Endif
Endif
Endif
FreeObj(oRest)
Return(.T.)
//Consulta Especifica no SXB
//XB_ALIAS XB_TIPO XB_SEQ XB_COLUNA XB_CONTEM XB_DESCRI...
//RUCPAR 1 01 RE "" RUC
//RUCPAR 2 01 01 U_XBRUCPAR() ""
//RUCPAR 5 01 01 VAR_IXB ""
//Dicionario SX3
//X3_CAMPO (A1_CGC e A2_CGC)
//X3_F3 = RUCPAR//Consulta Padrao - API turuc.com.py - F3
UserFunctionXBRUCPAR() // --> L
LocalcCod:=""
LocalcVar:=ReadVar()
LocallRet:=RUCBrowse(&(cVar),@cCod)
IflRet
VAR_IXB:=cCod
&(cVar) :=cCod Endif
Return(lRet)
StaticFunctionRUCBrowse(cGet,cCod)
LocaloDlg,oBrw,oCol,oPan,oGet,oBtn
LocaloFnt:=TFont():New("Arial",,020,,.F.,,,,,.F.,.F.)
LocalbEnd:= {|| lRet:=.T.,oDlg:End()}
LocallRet:=.F.
LocalnPag:=0
LocalaRow:= {}
cGet:=PadR(cGet,50," ")
DEFINEMSDIALOGoDlgTITLE"Consulta turuc.com.py"FROM0,0To400,820PIXEL
oPan:=TPanel():New(0,0,,oDlg,,,,,,410,20,.F.,.F.)
oPan:Align:=CONTROL_ALIGN_TOP
DEFINEFWBROWSEoBrwDATAARRAYARRAYaRowNOCONFIGNOREPORTLINEHEIGHT21OFoDlg
@ 003,005MSGEToGetVARcGetSIZE240,012OFoPanPICTURE"@!"FONToFntVALID (iif(oGet:LMODIFIED,aRow:=SetBrwRow(oBrw,cGet,0),Nil),nPag:=0,.T.) PIXEL
@ 004,250BUTTON"&Consulta" SIZE035,012OFoPanACTION {|| nPag:=0,aRow:=SetBrwRow(oBrw,cGet,nPag),oBtn:SetFocus()} PIXEL
@ 004,290BUTTON"&Seguinte" SIZE035,012OFoPanWHENLen(aRow) >10ACTION {|| ++nPag,aRow:=SetBrwRow(oBrw,cGet, @nPag)} PIXEL
@ 004,330BUTTON"Sitio &Web" SIZE035,012OFoPanWHEN.T. ACTION {|| ShellBrw("https://turuc.com.py/#consulta")} PIXEL
@ 004,370BUTTONoBtnPROMPT"&OK"SIZE035,012OFoPanWHEN ! Empty(aRow) ACTIONEval(bEnd) PIXEL
oBrw:SetDoubleClick(bEnd)
oBrw:SetFontBrowse(TFont():New("Arial",,-14,,.F.))
oBrw:NPOSSIBLEROWS:=15
ADDMARKCOLUMNoColDATA {|| oBrw:oData:aArray[oBrw:At(),4]} OFoBrw
ADDCOLUMNoColDATA {|| oBrw:oData:aArray[oBrw:At(),1]} TITLE"NOMBRE" TYPE"C"SIZE50DECIMAL0PICTURE""HEADERCLICK {|| aSort(aRow,,,{|x,y| x[1]<y[1]}),oBrw:Refresh(.T.)} ALIGN1OFoBrw
ADDCOLUMNoColDATA {|| oBrw:oData:aArray[oBrw:At(),2]} TITLE"RUC" TYPE"C"SIZE10DECIMAL0PICTURE""HEADERCLICK {|| aSort(aRow,,,{|x,y| x[2]<y[2]}),oBrw:Refresh(.T.)} ALIGN1OFoBrw
ADDCOLUMNoColDATA {|| oBrw:oData:aArray[oBrw:At(),3]} TITLE"ESTADO" TYPE"C"SIZE12DECIMAL0PICTURE""HEADERCLICK {|| aSort(aRow,,,{|x,y| x[3]<y[3]}),oBrw:Refresh(.T.)} ALIGN1OFoBrw
aRow:=SetBrwRow(oBrw,cGet,0)
oBrw:Activate()
IfEmpty(cGet)
oGet:SetFocus()
Else
oBrw:SetFocus()
Endif
oBrw:Refresh(.T.)
ACTIVATEMSDIALOGoDlgCENTERED
IflRet
cCod:=AllTrim(aRow[oBrw:nAt,2])
Endif
FreeObj(oBrw)
Return(lRet)
StaticFunctionSetBrwRow(oBrw,cGet,nPag)
LocalaRow:= {}
LocalnPos:=0
LocalnMax:=0
LocalcRaz:=""
LocalcEst:=""
LocalcRuc:=""
LocalcMar:=""
LocaljRow:=Nil
FWMsgRun(Nil,{|| jRow:=TURUCAPIS(cGet, @nPag, @nMax)},Nil,"Consulta - turuc.com.py")
If ! Empty(jRow)
FornPos:=1ToLen(jRow)
cRaz:=jRow[nPos]["razonSocial"]
cRuc:=jRow[nPos]["ruc"]
cEst:=jRow[nPos]["estado"]
cMar:=iif(cEst=="ACTIVO","ENABLE","DISABLE")
aAdd(aRow, {cRaz,cRuc,cEst,cMar})
NextnPos
Endif
//Generico RUC
IfEmpty(aRow)
aAdd(aRow, {"Consumidor Final IC", "44444401-7","Generico","ENABLE"})
aAdd(aRow, {"Clientes Exportación","66666601-6","Generico","ENABLE"})
aAdd(aRow, {"Agentes Diplomáticos","77777701-0","Generico","ENABLE"})
aAdd(aRow, {"Clientes Exterior", "88888801-5","Generico","ENABLE"})
aAdd(aRow, {"Proveedores Exterior","99999901-0","Generico","ENABLE"})
nMax:=1
Endif
//Ajusta Browse
oBrw:SetArray(aRow)
IfValType(oBrw:oBrowse) =="O"
oBrw:oBrowse:cToolTip:="Pagina: "+cValToChar(nPag+1) +"/"+cValToChar(nMax)
IfnPag>=nMax
nPag:=0
Endif
Endif
oBrw:Refresh(.T.)
Return(aRow)
StaticFunctionTURUCAPIS(cKey,nPag,nMax)
LocaloRest:=FwRest():New("https://turuc.com.py")
LocaloJson:=JsonObject():New()
LocalaHead:= {'accept: application/json;charset=UTF-8'}
LocaljRes :=Nil
LocalcRes :=Nil
cKey:=AllTrim(cKey)
IfLen(cKey) >=3
oRest:SetPath("/api/contribuyente/search?page="+cValToChar(nPag)+"&search="+escape(cKey))
IfoRest:Get(aHead)
cRes:=DecodeUtf8(oRest:GetResult())
Else
MsgInfo(oRest:GetLastError(),"Atencion")
EndIf
Endif
If ! Empty(cRes) .And.Empty(oJson:fromJson(cRes))
nMax:=oJson["data"]["paginas"]
jRes:=oJson["data"]["contribuyentes"]
Else
nPag:=0
nMax:=0
jRes:=""
Endif
Return(jRes)
StaticFunctionShellBrw(cUrl)
LocalcBrw,cAux
LocalnRem:=GetRemoteType(@cAux)
IfnRem==2
cBrw:=GetPvProfString("CONFIG","HELPBROWSER","firefox",GetRemoteIniName())
IfEmpty(cBrw)
cBrw:=GetSrvProfString("HELPBROWSER","firefox")
EndIf
If ! Empty(cBrw)
WaitRun(cBrw+" "+cUrl)
ElseIf"MAC" $(Upper(cAux))
MsgInfo("Web browser not found for: "+cAux)
Else
ShellExecute("Browser","/usr/bin/firefox",cUrl,"/",1)
Endif
Else//Windows
ShellExecute("open",cUrl,"","",1)
Endif
Return(Nil)No se Aplica