Skip to content

Commit

Permalink
On pedido component, disables branch withdrawal (retiro en sucursal) …
Browse files Browse the repository at this point in the history
…option when selected branch office is not a withdrawal point.
  • Loading branch information
facundososalopez committed Apr 8, 2023
1 parent 61582c4 commit 1ee2468
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 72 deletions.
9 changes: 8 additions & 1 deletion src/app/components/pedido/pedido.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -142,11 +142,18 @@ <h1 class="h3 mb-0 flex-fill text-truncate">
<div class="mb-3 d-flex flex-row justify-content-center align-items-center">
<label class="form-label me-2">Seleccione el tipo de envío:</label>
<div class="btn-group d-flex flex-fill" role="group">
<input type="radio" mame="oe" class="btn-check" id="oe-retiro-en-sucursal" autocomplete="off" [disabled]="retiroEnSucursalDisabled" (click)="opcionEnvioClick(oe.RETIRO_EN_SUCURSAL)" [checked]="form.get('opcionEnvio').value === oe.RETIRO_EN_SUCURSAL">
<label class="btn btn-outline-secondary" for="oe-retiro-en-sucursal">Retiro en sucursal</label>
<input type="radio" mame="oe" class="btn-check" id="oe-envio-a-domicilio" autocomplete="off" (click)="opcionEnvioClick(oe.ENVIO_A_DOMICILIO)" [checked]="form.get('opcionEnvio').value === oe.ENVIO_A_DOMICILIO">
<label class="btn btn-outline-secondary" for="oe-envio-a-domicilio">Envío a domicilio</label>
</div>

<!-- <div class="btn-group d-flex flex-fill" role="group">
<input type="radio" class="btn-check" [value]="oe.RETIRO_EN_SUCURSAL" id="oe-retiro-en-sucursal" autocomplete="off" formControlName="opcionEnvio">
<label class="btn btn-outline-secondary" for="oe-retiro-en-sucursal">Retiro en sucursal</label>
<input type="radio" class="btn-check" [value]="oe.ENVIO_A_DOMICILIO" id="oe-envio-a-domicilio" autocomplete="off" formControlName="opcionEnvio">
<label class="btn btn-outline-secondary" for="oe-envio-a-domicilio">Envío a domicilio</label>
</div>
</div> -->
</div>
<div class="my-3" *ngIf="form && form.get('opcionEnvio').value === oe.ENVIO_A_DOMICILIO">
<label class="form-label sr-only" for="opcionEnvioUbicacion">Ubicación</label>
Expand Down
170 changes: 99 additions & 71 deletions src/app/components/pedido/pedido.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ export class PedidoComponent implements OnInit, OnDestroy {
formasDePago: FormaDePago[] = [];
formaDePagoPredeterminada: FormaDePago;

retiroEnSucursalDisabled = false;

constructor(private fb: UntypedFormBuilder,
modalConfig: NgbModalConfig,
private modalService: NgbModal,
Expand Down Expand Up @@ -147,14 +149,32 @@ export class PedidoComponent implements OnInit, OnDestroy {
;

this.subscription.add(this.sucursalesService.sucursal$.subscribe(s => {
if (!s.configuracionSucursal.puntoDeRetiro) {
this.form.get('opcionEnvio').setValue(OpcionEnvio.ENVIO_A_DOMICILIO);
}
this.setOpcionEnvio(s.idSucursal);
}));

this.init();
}

setOpcionEnvio(idSucursal: number, value: OpcionEnvio|null = null) {
if (value === null) {
value = this.form.get('opcionEnvio').value;
} else {
this.form.get('opcionEnvio').setValue(value);
}
if (!this.esSucursalPuntoDeReRetiro(idSucursal)) {
if (value === OpcionEnvio.RETIRO_EN_SUCURSAL) {
this.form.get('opcionEnvio').setValue(null);
}
this.retiroEnSucursalDisabled = true;
} else {
this.retiroEnSucursalDisabled = false;
}
}

opcionEnvioClick(value: OpcionEnvio) {
this.setOpcionEnvio(this.sucursalesService.getIdSucursal(), value);
}

ngOnDestroy() {
this.subscription.unsubscribe();
}
Expand All @@ -174,6 +194,7 @@ export class PedidoComponent implements OnInit, OnDestroy {
error: err => this.mensajeService.msg(err.error, MensajeModalType.ERROR),
})
;
this.setOpcionEnvio(this.sucursalesService.getIdSucursal());
} else {
if (this.action === Action.EDITAR) {
const id = Number(this.route.snapshot.paramMap.get('id'));
Expand Down Expand Up @@ -221,27 +242,28 @@ export class PedidoComponent implements OnInit, OnDestroy {
this.pedidosService.getRenglonesDePedido(p.idPedido, this.action === Action.CLONAR)
])
.pipe(finalize(() => this.loadingOverlayService.deactivate()))
.subscribe(
(v: [CuentaCorrienteCliente, RenglonPedido[]]) => {
this.datosParaEditarOClonar.ccc = v[0];
this.datosParaEditarOClonar.renglones = v[1].map(e => ({ renglonPedido : e }));
if (this.action === Action.EDITAR) {
v[1].forEach(e => this.cantidadesInicialesPedido[e.idProductoItem] = e.cantidad);
}
this.datosParaEditarOClonar.sucursal = null;
if (p.tipoDeEnvio === TipoDeEnvio.RETIRO_EN_SUCURSAL) {
this.datosParaEditarOClonar.opcionEnvio = OpcionEnvio.RETIRO_EN_SUCURSAL;
this.datosParaEditarOClonar.sucursal = p.idSucursal ? { idSucursal: p.idSucursal } : null;
} else {
this.datosParaEditarOClonar.opcionEnvio = OpcionEnvio.ENVIO_A_DOMICILIO;
if (p.tipoDeEnvio) {
this.datosParaEditarOClonar.opcionEnvioUbicacion = p.tipoDeEnvio === TipoDeEnvio.USAR_UBICACION_FACTURACION ?
OpcionEnvioUbicacion.USAR_UBICACION_FACTURACION : OpcionEnvioUbicacion.USAR_UBICACION_ENVIO;
.subscribe({
next: (v: [CuentaCorrienteCliente, RenglonPedido[]]) => {
this.datosParaEditarOClonar.ccc = v[0];
this.datosParaEditarOClonar.renglones = v[1].map(e => ({ renglonPedido : e }));
if (this.action === Action.EDITAR) {
v[1].forEach(e => this.cantidadesInicialesPedido[e.idProductoItem] = e.cantidad);
}
}
this.inicializarForm();
}
);
this.datosParaEditarOClonar.sucursal = null;
if (p.tipoDeEnvio === TipoDeEnvio.RETIRO_EN_SUCURSAL) {
this.datosParaEditarOClonar.opcionEnvio = OpcionEnvio.RETIRO_EN_SUCURSAL;
this.datosParaEditarOClonar.sucursal = p.idSucursal ? { idSucursal: p.idSucursal } : null;
} else {
this.datosParaEditarOClonar.opcionEnvio = OpcionEnvio.ENVIO_A_DOMICILIO;
if (p.tipoDeEnvio) {
this.datosParaEditarOClonar.opcionEnvioUbicacion = p.tipoDeEnvio === TipoDeEnvio.USAR_UBICACION_FACTURACION ?
OpcionEnvioUbicacion.USAR_UBICACION_FACTURACION : OpcionEnvioUbicacion.USAR_UBICACION_ENVIO;
}
}
this.inicializarForm();
},
error: err => this.mensajeService.msg(err.error, MensajeModalType.ERROR),
});
},
error: err => {
this.mensajeService.msg(err.error, MensajeModalType.ERROR);
Expand All @@ -264,13 +286,13 @@ export class PedidoComponent implements OnInit, OnDestroy {
this.loadingOverlayService.activate();
this.cuentasCorrienteService.getCuentaCorrienteClientePredeterminado()
.pipe(finalize(() => this.loadingOverlayService.deactivate()))
.subscribe(
ccc => {
.subscribe({
next: ccc => {
this.cccPredeterminado = ccc;
this.inicializarForm();
},
err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
)
error: err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
})
;
} else {
this.inicializarForm();
Expand Down Expand Up @@ -419,7 +441,7 @@ export class PedidoComponent implements OnInit, OnDestroy {
this.form.get('descuento').setValue(data.descuento);
this.form.get('recargo').setValue(data.recargo);

this.form.get('opcionEnvio').setValue(data.opcionEnvio ? data.opcionEnvio : null);
this.setOpcionEnvio(this.sucursalesService.getIdSucursal(), data.opcionEnvio ? data.opcionEnvio : null)
this.form.get('opcionEnvioUbicacion').setValue(data.opcionEnvioUbicacion ? data.opcionEnvioUbicacion : null);

if (data.pagos && Array.isArray(data.pagos) && data.pagos.length) {
Expand Down Expand Up @@ -452,17 +474,20 @@ export class PedidoComponent implements OnInit, OnDestroy {
this.loadingOverlayService.activate();
this.productosService.getDisponibilidadEnStock(ppvs)
.pipe(finalize(() => this.loadingOverlayService.deactivate()))
.subscribe((pfs: ProductoFaltante[]) => {
if (!pfs.length) {
this.doSubmit();
} else {
this.agregarErroresDisponibilidad(pfs);
this.accordion.expand('productos');
this.mensajeService.msg(
'Uno o mas productos no poseen stock disponible. Por favor, verifique la sección Productos.',
MensajeModalType.ERROR
);
}
.subscribe({
next: (pfs: ProductoFaltante[]) => {
if (!pfs.length) {
this.doSubmit();
} else {
this.agregarErroresDisponibilidad(pfs);
this.accordion.expand('productos');
this.mensajeService.msg(
'Uno o mas productos no poseen stock disponible. Por favor, verifique la sección Productos.',
MensajeModalType.ERROR
);
}
},
error: err => this.mensajeService.msg(err.error, MensajeModalType.ERROR),
})
;
}
Expand All @@ -477,16 +502,16 @@ export class PedidoComponent implements OnInit, OnDestroy {
this.saving = false;
this.loadingOverlayService.deactivate();
}))
.subscribe(
() => {
.subscribe({
next: () => {
this.reset();
const msg = np.idPedido ? 'Pedido actualizado correctamente!' : 'Pedido enviado correctamente!';
this.mensajeService.msg(msg, MensajeModalType.INFO).then(() => {
this.router.navigate(['/pedidos']);
});
},
err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
)
error: err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
})
;
}

Expand Down Expand Up @@ -665,20 +690,23 @@ export class PedidoComponent implements OnInit, OnDestroy {
this.loadingOverlayService.activate();
this.productosService.getDisponibilidadEnStock(ppvs)
.pipe(finalize(() => this.loadingOverlayService.deactivate()))
.subscribe((pfs: ProductoFaltante[]) => {
if (!pfs.length) {
const nrp: NuevoRenglonPedido = {
idProductoItem: p.idProducto,
cantidad: cant,
};

this.addRenglonPedido(nrp);
} else {
this.mensajeService.msg(
'No se puede solicitar mas stock para dicho producto. Por favor, verifique la sección Productos.',
MensajeModalType.ERROR
);
}
.subscribe({
next: (pfs: ProductoFaltante[]) => {
if (!pfs.length) {
const nrp: NuevoRenglonPedido = {
idProductoItem: p.idProducto,
cantidad: cant,
};

this.addRenglonPedido(nrp);
} else {
this.mensajeService.msg(
'No se puede solicitar mas stock para dicho producto. Por favor, verifique la sección Productos.',
MensajeModalType.ERROR
);
}
},
error: err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
})
;
}
Expand All @@ -688,10 +716,10 @@ export class PedidoComponent implements OnInit, OnDestroy {
this.loadingOverlayService.activate();
this.pedidosService.calcularRenglones([nrp], cliente.idCliente)
.pipe(finalize(() => this.loadingOverlayService.deactivate()))
.subscribe(
data => this.handleRenglonPedido(data[0]),
err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
)
.subscribe({
next: data => this.handleRenglonPedido(data[0]),
error: err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
})
;
}

Expand Down Expand Up @@ -770,10 +798,10 @@ export class PedidoComponent implements OnInit, OnDestroy {
this.loadingResultados = false;
this.loadingOverlayService.deactivate();
}))
.subscribe(
(r: Resultados) => this.form.get('resultados').setValue(r),
err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
)
.subscribe({
next: (r: Resultados) => this.form.get('resultados').setValue(r),
error: err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
})
;
}

Expand All @@ -799,14 +827,14 @@ export class PedidoComponent implements OnInit, OnDestroy {
this.loadingOverlayService.activate();
this.pedidosService.calcularRenglones(renglones, cliente.idCliente)
.pipe(finalize(() => this.loadingOverlayService.deactivate()))
.subscribe(
rps => {
.subscribe({
next: rps => {
const nuevosRenglones = [];
rps.forEach((rp: RenglonPedido) => nuevosRenglones.push({ renglonPedido: rp }));
this.renglonesPedido.setValue(nuevosRenglones);
},
err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
)
error: err => this.mensajeService.msg(err.error, MensajeModalType.ERROR)
})
;
}
}
Expand Down Expand Up @@ -847,8 +875,8 @@ export class PedidoComponent implements OnInit, OnDestroy {
);
}

esSucursalSeleccionadaPuntoDeRetiro() {
return !!this.sucursales.filter(s => s.idSucursal === this.sucursalesService.getIdSucursal()).length;
esSucursalPuntoDeReRetiro(idSucursal: number): boolean {
return !!this.sucursales.filter(s => s.idSucursal === idSucursal).length;
}

toggleDescuento() {
Expand Down

0 comments on commit 1ee2468

Please sign in to comment.