#INCLUDE 'PROTHEUS.CH' #INCLUDE 'RWMAKE.CH' #INCLUDE 'FONT.CH' #INCLUDE 'COLORS.CH' User Function M410LIOK Local nOpc := GD_INSERT+GD_DELETE+GD_UPDATE Private aColsIni := {} Private aHeader := {} Private noBrw1 := 0 Private oGet := 0 Private cItem := Space(TamSx3("Z4_NITEM")[1]) Private cDesc := Space(TamSx3("Z4_DESC")[1]) //Private nPosItem := Space(3) //Private nPosDesc := Space(30) //nPosItem := aScan(aHeader,{|X| Alltrim(X[2])=="M->C6_ITEM" }) //nPosDesc := aScan(aHeader,{|X| Alltrim(X[2])=="M->C6_DESCRI"}) //cItem := aCols[N,nPosItem] //cDesc := aCols[N,nPosDesc] dbSelectarea ("SB1") ---------------------------//aqui nao tá funcionando 100 por cento, nao consegui fazer funcionar a função de cima cItem := SB1->B1_COD cDesc := SB1->B1_DESC SetPrvt("oJanela","oSay1","oSay2","oGet1","oGet2","oGet") oJanela := MSDialog():New( 100,232,586,972,"Insumos",,,.F.,,,,,,.T.,,,.T. ) oJanela:bInit := {||EnchoiceBar(oJanela,{|| GravDad()},{|| oJanela:End()},.F.,)} oSay1 := TSay():New( 016,024,{||"Código"},oJanela,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008) oSay2 := TSay():New( 016,120,{||" Item"},oJanela,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008) oGet1 := TGet():New( 028,024,{|u| If(PCount()>0,cItem:=u,cItem)},oJanela,060,008,'',,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.F.,.F.,,.F.,.F.,"","cGrupo",,) oGet2 := TGet():New( 028,144,{|u| If(PCount()>0,cDesc:=u,cDesc)} ,oJanela,152,008,'',,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.F.,.F.,,.F.,.F.,"","cDesc",,) // Funcao monta aheader MHoBrw1() //Funcao monta aColsIni MCoBrw1() oGet := MsNewGetDados():New(084,5,238,412,nOpc,'AllwaysTrue()','AllwaysTrue()','',,0,99,'AllwaysTrue()','','AllwaysTrue()',oJanela,aHeader,aColsIni ) oGet:Disable() oGet:delline() oGet:Enable() oJanela:Activate(,,,.T.) Return .T. /* user function DelLinha() dbSelectarea("SZ4") SZ4->(dbSetOrder(1)) SZ4->(dbSeek(xFilial("SZ4") + M->C5_NUM )) IF aCols[nAt][Len (aHeader) +1] BEGIN TRANSACTION while !SZ4->(EOF()) .AND. M->C5_NUM == M->Z4_NPED TENTEI ISSO AQUI MAS NAO DEU CERTO, RecLock( "SZ4" , .F. ) SZ4->(dbdelete()) 4 SZ4->(MsUnLock()) SZ4->(DBSKIP()) ENDDO END TRANSACTION MsgAlert("Insumos Excluidos") oJanela:Refresh() oJanela:end() else oJanela:Refresh() oJanela:end() Return (.t.)*/ Static Function MHoBrw1() DbSelectArea("SX3") DbSetOrder(2) DbSeek("Z4_COD") Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } ) DbSeek("Z4_DESC") Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } ) DbSeek("Z4_QTD") Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } ) DbSeek("Z4_UM") Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } ) DbSeek("Z4_VLRU") Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO,SX3->X3_PICTURE , SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } ) DbSeek("Z4_VLRT") Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO,SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } ) Return Static Function MCoBrw1() Local aAux := {} dbSelectarea("SZ4") dbSetorder(2) IF SZ4->(dbSeek(xfilial("SZ4") + M->C5_NUM + aCols[n,1])) //PROCURA DADOS, CASO EXISTA while M->C5_NUM = SZ4->Z4_NPED .and. SZ4->Z4_NITEM = aCols[n,1] // COMPARA A INCIDENCIA DOS DADOS, AADD (aColsIni , {SZ4->Z4_COD ,SZ4->Z4_DESC , SZ4->Z4_QTD, SZ4->Z4_UM, SZ4->Z4_VLRU, SZ4->Z4_VLRT,.F.}) // CARREGA CAMPOS ENCONTRADOS ENQUANTO O WHILE FOR .T. SZ4->(DBSKIP()) // TROCA LINHA enddo else AADD (aColsIni , {Space(TamSx3("Z4_COD")[1]) ,Space(TamSx3("Z4_DESC")[1]) , 0,; Space(TamSx3("Z4_UM")[1]), 0, 0,.F.}) endif Return Static Function GravDad DbSelectArea("SZ4") SZ4->(DbSetOrder(1)) For nI := 1 To Len(oGet:Acols) IF SZ4->(dbSeek(xFilial("SZ4") + M->C5_NUM + oGet:aCols[nI][1] )) // IF PROCURA SE EXISTE, E RETORNA TRUE, SE TRUE // Altera // RECLOCK .F. ALTERA OU EXCLUI. // oGetDados:aCols [ Linha que voce quer ] [ Len(oGetDados:aHeader) + 1 ] RecLock( "SZ4" , .F. ) IF oGet:aCols[nI][Len (aHeader) +1] // LINHAS X COLUNAS + 1 EXCLUIDO (DBDELETE) SZ4->(dbdelete()) ELSE // ELSE = ALTERA CAMPOS DETERMINADOS. SZ4->Z4_QTD := oGet:aCols[nI][3] SZ4->Z4_VLRU := oGet:aCols[nI][5] SZ4->Z4_VLRT := (oGet:aCols[nI][3]*oGet:aCols[nI][5]) ENDIF Else // SE DBSEED NAO RETORNA, RECLOCK .T. // INCLUSÃO // Inclui RecLock( "SZ4" , .T. ) //AADD(aColsIni , {Space(TamSx3("Z4_COD")[1]) ,Space(TamSx3("Z4_DESC")[1]) , Space(TamSx3("Z4_QTD")[1]),; //Space(TamSx3("Z4_UM")[1]), Space(TamSx3("Z4_VLRU")[1]), Space(TamSx3("Z4_VLRT")[1]),.F.}) SZ4->Z4_FILIAL := xFilial("SZ4") SZ4->Z4_COD := oGet:aCols[nI][1] SZ4->Z4_DESC := oGet:aCols[nI][2] SZ4->Z4_QTD := oGet:aCols[nI][3] SZ4->Z4_UM := oGet:aCols[nI][4] SZ4->Z4_VLRU := oGet:aCols[nI][5] SZ4->Z4_VLRT := (oGet:aCols[nI][3]*oGet:aCols[nI][5]) SZ4->Z4_NITEM := aCols[n,1] SZ4->Z4_NPED := M->C5_NUM SZ4->(MsUnLock()) EndIf Next nI msginfo("Alterado com Sucesso") oJanela:Refresh() oJanela:end() u_DelLinha u_partediaria() Return user function extot(cCampo) Local nValor := 0 Local nI := 0 IF cCampo = "Z4_QTD" nValor := M->Z4_QTD * oGet:aCols[oGet:nAt][5] else nValor := M->Z4_VLRU * oGet:aCols[oGet:nAt][3] ENDIF oGet:refresh() Return (nValor) User Function valexist() //ESSA FUNÇÇÃO NAO ESTÁ FUNCIONANDO, EU CHAMEI ELA NA VALIDAÇÃO DO CAMPO MAS NÃO TÁ DANDO CERTO, // ELA DEVERIA IMPEDIR QUE REPITA ITENS NA TELA. DbSelectArea("SZ4") SZ4->(DbSetOrder(1)) //Z4_FILIAL+Z4_COD+Z4_NPED For nI := 1 To Len( oGET:aCols ) Private cTxt := "" cTxt := AllTrim(M->Z4_COD) //If SZ4->(dbSeek(xFilial("SZ4")+M->Z4_COD+M->C5_NUM )) If SZ4->(dbSeek(xFilial("SZ4")+M->cTxt+M->C5_NUM )) MsgAlert ("Insumo Já Cadastrado") Return .F. oGet:disable() Else Return .T. EndIf Next nI Return () /*User Function valexist() DbSelectArea("SZ4") SZ4->(DbSetOrder(3)) //Z4_FILIAL+Z4_COD+Z4_NPED For nI := 1 To Len( oGET:aCols ) //If SZ4->(dbSeek(xFilial("SZ4")+oGet:aCols[nI][1]+M->C5_NUM )) If SZ4->(dbSeek(xFilial("SZ4")+M->Z4_COD+M->C5_NUM )) MsgAlert ("Insumo Já Cadastrado") Return .F. oGet:disable() Else Return .T. oGet:enable() EndIf NEXT Return ()