<?php

namespace Daniv04\HaciendaPackage\Services\Validators;


class ElectronicPaymentReceiptValidatorService extends BaseReceiptValidatorService
{
    public static function rules(array $data): array
    {

        return array_merge(
            parent::rules($data),
            [
            //Specific rules for Electronic Payment Receipt
            //Encabezado
                'Encabezado.CodigoActividadEmisor' => ['prohibited'],
                'Encabezado.CodigoActividadReceptor' => ['prohibited'],
            //Emisor
                'Emisor.RegistroFiscal8707' => ['prohibited'],
                'Emisor.NombreComercial' => ['prohibited'],
                'Emisor.Ubicacion' => ['prohibited'],
                'Emisor.Telefono' => ['prohibited'],
            //Receptor
                'Receptor.Identificacion.Tipo' => ['prohibited'],
                'Receptor.NombreComercial' => ['prohibited'],
                'Receptor.Ubicacion' => ['prohibited'],
                'Receptor.OtrasSenasExtranjero' => ['prohibited'],
                'Receptor.Telefono' => ['prohibited'],
                'CondicionVenta' => ['required', 'string', 'in:09,11'],
                'CondicionVentaOtros' => ['prohibited'],
                'PlazoCredito' => ['prohibited'],

            //DetalleServicio
                'DetalleServicio.LineaDetalle.*.PartidaArancelaria' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.CodigoCABYS' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.CodigoComercial' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.Cantidad' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.UnidadMedida' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.TipoTransaccion' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.UnidadMedidaComercial' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.NumeroVINoSerie' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.RegistroMedicamento' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.FormaFarmaceutica' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.PrecioUnitario' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.Descuento' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.IVACobradoFabrica' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.BaseImponible' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.ImpuestoAsumidoEmisorFabrica' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.Impuesto' => ['nullable', 'array', 'min:1', 'max:1000'],
                'DetalleServicio.LineaDetalle.*.Impuesto.*.DatosImpuestoEspecifico' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.Impuesto.*.DatosImpuestoEspecifico.CantidadUnidadMedida' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.Impuesto.*.DatosImpuestoEspecifico.Porcentaje' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.Impuesto.*.DatosImpuestoEspecifico.Proporcion' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.Impuesto.*.DatosImpuestoEspecifico.VolumenUnidadConsumo' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.Impuesto.*.DatosImpuestoEspecifico.ImpuestoUnidad' => ['prohibited'],
                'DetalleServicio.LineaDetalle.*.Impuesto.*.Exoneracion' => ['prohibited'],

            //Otros Cargos
                'OtrosCargos' => ['prohibited'],

            //ResumenFactura
                'ResumenFactura.TotalServGravados' => ['prohibited'],
                'ResumenFactura.TotalServExentos' => ['prohibited'],
                'ResumenFactura.TotalServExonerado' => ['prohibited'],
                'ResumenFactura.TotalServNoSujeto' => ['prohibited'],
                'ResumenFactura.TotalMercanciasGravadas' => ['prohibited'],
                'ResumenFactura.TotalMercanciasExentas' => ['prohibited'],
                'ResumenFactura.TotalMercExonerada' => ['prohibited'],
                'ResumenFactura.TotalMercNoSujeta' => ['prohibited'],
                'ResumenFactura.TotalGravado' => ['prohibited'],
                'ResumenFactura.TotalExento' => ['prohibited'],
                'ResumenFactura.TotalExonerado' => ['prohibited'],
                'ResumenFactura.TotalNoSujeto' => ['prohibited'],
                'ResumenFactura.TotalDescuentos' => ['prohibited'],
                'ResumenFactura.TotalImpAsumEmisorFabrica' => ['prohibited'],
                'ResumenFactura.TotalIVADevuelto' => ['prohibited'],
                'ResumenFactura.TotalOtrosCargos' => ['prohibited'],
                'ResumenFactura.MedioPago' => ['required', 'array', 'max:4'],

            //Informacion referencia
                'InformacionReferencia.*.TipoDocIR' => ['required_with:InformacionReferencia', 'string', 'in:01,02,03,04,07,08,10'],
                'InformacionReferencia.*.Numero' => ['required_with:InformacionReferencia.*.TipoDocIR,01,02,03,04,07,08,10', 'string', 'max:50'],

            //Otros
                'Otros' => ['prohibited'],

            ]
        );
    }

     public static function after($validator, array $data) : void
     {
       parent::after($validator, $data);
     }
    

    
}