jccastillo0007 / eFacturaT

eFacturaT
0 stars 2 forks source link

WEB Pagos - Pago en MXN, y documentos relacionados en otra moneda #1421

Closed RigoFlores closed 6 years ago

RigoFlores commented 6 years ago

Ejemplo en producción Cliente: GIM140225NB0 Anexo la captura de la pantalla abajo. En el XML que intenta timbrar, le pone el TipoCambioDR=0.00, entonces marca error.

    <pagos:Pagos xmlns:pagos="http://www.sat.gob.mx/Pagos" Version="1.0">
        <pagos:Pago CtaBeneficiario="012180001958200225" CtaOrdenante="002180434400082413" FechaPago="2018-09-07T12:00:00" FormaDePagoP="03" MonedaP="MXN" Monto="246964.70" NumOperacion="08590365854032" RfcEmisorCtaBen="BBVA830831LJ2" RfcEmisorCtaOrd="BNM840515VB1">
            <pagos:DoctoRelacionado Folio="510" IdDocumento="4149245b-bbff-4378-b7f1-e95b7931eec9" ImpPagado="6380.00" ImpSaldoAnt="6380.00" ImpSaldoInsoluto="0.00" MetodoDePagoDR="PPD" MonedaDR="USD" NumParcialidad="1" Serie="FE" TipoCambioDR="0.0"/>
            <pagos:DoctoRelacionado Folio="513" IdDocumento="5439a964-6cce-4313-a3db-3cc4614bd26f" ImpPagado="6380.00" ImpSaldoAnt="6380.00" ImpSaldoInsoluto="0.00" MetodoDePagoDR="PPD" MonedaDR="USD" NumParcialidad="1" Serie="FE" TipoCambioDR="0.0"/>
        </pagos:Pago>
    </pagos:Pagos>

La petición anterior era que tomara el tipo de cambio del docto relacionado, pero no, ahora se tiene que calcular bajo este escenario: moneda de pago MXN y moneda docto relacionada DISTINTA a MXN:

Se toma el importe del Pago (en MXN) Se toma el importe del pago total por 1 o las facturas relacionadas. El tipo de cambio será el ImportePagado / Importe del pago a las factura involucradas.

En el ejemplo que estamos tratando aquí, el tipo de cambio sería 246964.70 / 12760 = 19.3546

Ese es el tipo de cambio que debería reportarse a nivel de documento relacionado. Estamos hablando del escenario donde te pagan en MXN las facturas emitidas en USD,

gimsa
jccastillo0007 commented 6 years ago

checale en PRU

RigoFlores commented 6 years ago

EN PRU, CON LA CUENTA TCM970625MB1, LA FACTURA FE2, ESTÁ EN DÓLARES, POR UN TOTAL DE 116 USD. EL PAGO LO INTENTÉ REGISTRAR COMO 1,000 MXN. DEBIÓ CALCULAR EL TIPO DE CAMBIO A NIVEL DOCUMENTO RELACIONADO ESTO ES 1000/116=8.6206.... (YA QUISIÉRAMOS QUE ASÍ ESTUVIERA EL TC DEL PESO).

TOTAL QUE MARCÓ XML MAL FORMADO, Y COMO RECORDARÁS NO TENGO FORMA DE ENTRAR A PRU... NO SÉ SI SEA POR EL TIPO DE CAMBIO, O CUÁL FUE LA RAZÓN DEL ERROR...

pago mxn 2 usd
RigoFlores commented 6 years ago

Te comentaba que el cálculo que indiqué anteriormente está al revés. RECUERDA QUE ES UN ESCENARIO SUPER ESPECÍFICO (MONEDAS DISTITNAS) Y ESTE ISSUE SE REFIERE AL TC DEL DOCUMENTO RELACIONADO Debe ser:

Ejemplo se recibe un pago de $10,000.00 (MXN) y los importes pagados a las facturas son (A): $300.00 y (B) $220.00, ambos en USD. El cálculo del tipo de cambio es:

TC a nivel de documento relacionado = ( Sumatoria de Importes pagados a cada factura, total o parcial ) / (Monto Pagado) = 520 / 10000 = 0.052

jccastillo0007 commented 6 years ago

para tu ejemplo de hace dos comentarios, pero con el calculo bien... seria 116/1000 = 0.116 cierto ?

Ya lo hizo correctamente

RigoFlores commented 6 years ago

Si, el cálculo de hace 3 comentarios, así debería hacerlo. Emití la factura FE3 con el rfc TCM970625MB1, que la hice en USD. Luego intenté pagarla en MXN, y me marcó XML mal formado

RigoFlores commented 6 years ago

REPETÍ VARIAS OCASIONES LA PRUEBA, Y SI LA FACTURA SE EMITIÓ EN USD, Y LUEGO SE INTENTA INGRESAR COBRO EN MXN, MARCA EL XML MAL FORMADO

jccastillo0007 commented 6 years ago

oye, algo que falta es que si el pago es en pesos, y el cfdi relacionado es en USD, al momento de hacer el complemento, se debe cambiar el pago en pesos, a USD, por ejemplo

Con el usuario TCM ... Factura de la tia FE13 es de 232 USD Hice un pago de 1000 pesos....

esos 1000 pesos se deben convertir a USD para saber cuanto esta pagando realmente... esa conversion no se esta haciendo...

jccastillo0007 commented 6 years ago

ya confirme y si es eso...

La pregunta es... con que tipo de cambio transformo los 1000 pesos en dolares para pagar una factura en dolares ?

RigoFlores commented 6 years ago

espera, espera... NO SE TIENE QUE CONVERTIR PESOS A USD Si el pago fue en pesos, entonces moneda de pago es MXN Si la moneda del docto relacionado es USD, así se mantiene también Lo único que hay que hacer es, que el tipo de cambio del docto relacionado, se tiene que calcular. Ya lo había escrito arriba, pero va de nuez. El asunto es que lo que se envía como tipo de cambio del docto relacionado, es una cantidad con pinchemil decimales, y ahí según yo está el pedo. Al menos en el conector eso está pasando.

Ejemplo se recibe un pago de $10,000.00 (MXN) y los importes pagados a las facturas son (A): $300.00 y (B) $220.00, ambos en USD. El cálculo del tipo de cambio es:

TC a nivel de documento relacionado = ( Sumatoria de Importes pagados a cada factura, total o parcial ) / (Monto Pagado) = 520 / 10000 = 0.052

jccastillo0007 commented 6 years ago

si, eso me queda claro.. pero hay un detalle raro....

si pagas 1000 en pesos a una factura de 200 usd (donde 200 usd es el total de la factura)

Cuanto capturas en el campo de importe pagado al momento de capturar el pago?

Es decir, esos 1000 pesos, a cuantos dolares equivale, para entonces descontar esos dolares de los 200 dolares del documento relacionado...

RigoFlores commented 6 years ago

Te estás enredando solito. Retomo tu ejemplo:

si pagas 1000 en pesos a una factura de 200 usd (donde 200 usd es el total de la factura) Si ellos indicaron que el pago fue total, entonces (monto es a nivel header, importe pagado es a nivel detalle): monedaP = MXN, monedaDR= USD, tipoCambioDR= 0.2 Saldo anterior = 200, saldo insoluto = 0; numero parcialidad = 1. monto=1000, importe pagado = 200

Ahora otro ejemplo; si ellos indican que los 1000 pesos que recibieron, corresponden un pago parcial de 112 USD del total de 200 USD que es la factura (porque la factura se emitió en USD, entonces lo que indiquen en la casilla al momento de capturar un pago parcial, también son USD), el resultado sería:

monedaP = MXN, monedaDR= USD, tipoCambioDR= 0.112 Saldo anterior = 200, saldo insoluto = 88; numero parcialidad = 1. monto=1000, importe pagado = 112

jccastillo0007 commented 6 years ago

Ok, el segundo ejemplo es el que despeja mi duda...

Los 112 dolares del importe pagado, ellos lo captura previamente ya vieron el tipo de cambio y definieron que son 112 usd... no debemos hacerlo nosotros

jccastillo0007 commented 6 years ago

ya deberia funcionar

RigoFlores commented 6 years ago

Deja buscar... es un poco de interpretación. A ellos seguramente les dirán, que te deposité 1000 pesos y corresponden a 112 USD. Entonces NUESTRA APLICACIÓN ES LA QUE CALCULA EL TIPO DE CAMBIO, DE ACUERDO A TODO LO MENCIONADO EN ESTE ISSUE.