private TMOV ObterMovimento(Movimento notaFiscal, TMOV movimento, Parametros parametros, bool faturamento) { GFILIAL filial = FilialApp.BuscarPorCNPJ(notaFiscal.CnpjFilial) ?? throw new Exception($"Filial com CNPJ {notaFiscal.CnpjFilial} não encontrado no RM."); bool issRetido = notaFiscal.TipoISS == ETipoISS.Retido; TTMV tipoMovimento = TipoMovimentoApp.BuscarPorCodigo(ObterCodigoMovimento(issRetido, parametros, faturamento)); FCFO fornecedorRM = faturamento ? FornecedorApp.ObterCliente(notaFiscal.Cliente, parametros, issRetido) : FornecedorApp.ObterFornecedor(notaFiscal.Fornecedor, parametros, issRetido); movimento.SERIE = tipoMovimento.TTMVSERIE.FirstOrDefault().SERIE; movimento.CODTMV = tipoMovimento.CODTMV; movimento.DATAEMISSAO = notaFiscal.DataEmissao; movimento.DATAEXTRA1 = notaFiscal.DataEmissao; movimento.DATAMOVIMENTO = notaFiscal.DataAuxiliar; movimento.CODCOLCFOAUX = movimento.CODCOLCFO = fornecedorRM.CODCOLIGADA; movimento.CODCFOAUX = movimento.CODCFO = fornecedorRM.CODCFO; movimento.CODMUNSERVICO = filial.CODMUNICIPIO; movimento.CODETDMUNSERV = filial.ESTADO; movimento.CODFILIAL = filial.CODFILIAL; movimento.VALOROUTROS = movimento.VALORBRUTO = notaFiscal.ValorBruto; movimento.VALORLIQUIDO = notaFiscal.ValorLiquido; if (faturamento) { movimento.IDNAT = ObterIdNat(parametros, faturamento, notaFiscal.Cliente.Estado); } else { movimento.IDNAT = ObterIdNat(parametros, faturamento, notaFiscal.Fornecedor.Estado); } movimento.TMOVHISTORICO = new TMOVHISTORICO() { CODCOLIGADA = movimento.CODCOLIGADA, IDMOV = movimento.IDMOV, HISTORICOCURTO = notaFiscal.Historico }; var tipo = faturamento ? ETipoImportacao.Prestado : ETipoImportacao.Tomado; foreach (var item in notaFiscal.Itens) { movimento.TITMMOV.Add(ItemMovimentoApp.ObterItemMovimento(ref movimento, item, 1, parametros, tipo)); } return(movimento); }