fixPagos($complemento); } public function fixPagos(NodeInterface $complemento): void { $pagos = $complemento->searchNodes('pago20:Pago'); foreach ($pagos as $pago) { $this->fixPago($pago); } } public function fixPago(NodeInterface $pago): void { $doctoRelacionados = $pago->searchNodes('pago20:DoctoRelacionado'); // más de un Documento relacionado if ($doctoRelacionados->count() < 2) { return; } // al menos uno de ellos contenga la misma moneda que la del Pago $hasDocumentsWithSameCurrency = false; foreach ($doctoRelacionados as $doctoRelacionado) { if ($doctoRelacionado['MonedaDR'] === $pago['MonedaP']) { $hasDocumentsWithSameCurrency = true; break; } } if (! $hasDocumentsWithSameCurrency) { return; } // se deben considerar 10 decimales en la EquivalenciaDR cuando el valor sea 1 foreach ($doctoRelacionados as $doctoRelacionado) { if ('1' === $doctoRelacionado['EquivalenciaDR']) { $doctoRelacionado['EquivalenciaDR'] = '1.0000000000'; // CRP20277 } } } }