Estando na filial criado um doc de saida e uso o execauto mata103 no pe m460fim, para criar um nota de entrada na filial 01 mas não esta respeitando

estando na filial criado um doc de saida e uso o execauto mata103 no pe m460fim, para criar um nota de entrada na filial 01 mas não esta respeitando a filial que coloco no executo. se for o cliente 000279-05 e cria com a filial 02, senão ele cria na filial 01.

mas esta criando sempre na filial 01, ele não respeita que estou em uma filial e quero a NF em outra filial.

DbSelectArea("SF2") DbSetOrder(1) Seek(xFilial("SF2")+cNfsad+cSerie)

If SF2->F2_CLIENTE == '000279' .And. SF2->F2_LOJA == '05' aadd(aCabec,{"F1_FILIAL" ,"02"}) Endif aadd(aCabec,{"F1_TIPO" ,"N"}) aadd(aCabec,{"F1_FORMUL" ,"N"}) aadd(aCabec,{"F1_DOC" ,SF2->F2_DOC}) aadd(aCabec,{"F1_SERIE" ,SF2->F2_SERIE}) aadd(aCabec,{"F1_EMISSAO",SF2->F2_EMISSAO}) aadd(aCabec,{"F1_FORNECE","002100"}) aadd(aCabec,{"F1_LOJA" ,"01"})

Antes de chamar o execauto, mude a váriavel privada já existente cfilant para a filial que você deseja criar a NF, depois volte ao valor original para continuar o processamento.


_cfil_original := cfilant

cfilant := '02'

execauto(...)

cfilant := _cfil_original

Além de mudar a variável cFilAnt é recomendável também reposicionar a SM0 usando a função FWSM0Util():setSM0PositionBycFilAnt(), assim garante que tudo está corretamente setado, e ao final você também força o reposicionamento na filial original.
O uso é bem simples, basta setar cFilAnt, e depois executar a função FWSM0Util():setSM0PositionBycFilAnt().