Skip to content

Commit

Permalink
date (ultimo pago) corregido
Browse files Browse the repository at this point in the history
  • Loading branch information
judithmarg committed Apr 27, 2024
1 parent 6a4c91a commit 5d9b300
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 60 deletions.
1 change: 0 additions & 1 deletion src/components/ClientDebit.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ const ClientDebit = ({ clientInfo }) => {
0
).toFixed(2)
);
console.log("ClientDebit.js: vBalance: ", vBalance, "clientInfo: ", clientInfo);
const navigation = useNavigation();

return (
Expand Down
14 changes: 11 additions & 3 deletions src/components/ClientItem.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import React from "react";
import React, { useEffect, useState } from "react";
import { View, Text, TouchableOpacity, StyleSheet, Dimensions } from "react-native";
import { MaterialCommunityIcons } from "@expo/vector-icons";
import { FontAwesome5 } from "@expo/vector-icons";
import { theme } from '../assets/Theme';
import StyledText from "../utils/StyledText";
import BorderBox from "../utils/BorderBox";
import useStore from "../stores/store";

const windowWidth = Dimensions.get('window').width;

Expand All @@ -13,7 +14,14 @@ const ClientItem = ({ client, onSelect }) => {
const vCuenta =client.Cuenta;
const vBalance = parseFloat(client.NotasPendientes.reduce((total, nota) => total + nota.Saldo_pendiente, 0).toFixed(2));
const vNotasPendientes = client.NotasPendientes.length;
const vUltimoPago = '';
const pagosRealizados = useStore(state => state.pagosRealizados);
const [vUltimoPago, setUltimoPago] = useState("2020-06-10");

useEffect( () => {
if(pagosRealizados.length > 0){
setUltimoPago(pagosRealizados.reduce((mayor, pago)=> pago.fecha > mayor && pago.cuenta === client.Cuenta? pago.fecha : mayor, "2020-06-10"));
}
}, [pagosRealizados]);
return (
<BorderBox onPress={() => onSelect(client.id)} style={{marginVertical: 10}}>
<View style={styles.iconContainer}>
Expand Down Expand Up @@ -46,7 +54,7 @@ const ClientItem = ({ client, onSelect }) => {
</View>
<View style={styles.textLine}>
<StyledText regularText>ultimo pago :</StyledText>
<StyledText regularText>2020-06-12</StyledText>
<StyledText regularText>{vUltimoPago}</StyledText>
</View>
</View>
</BorderBox>
Expand Down
82 changes: 29 additions & 53 deletions src/screens/AutomaticPayScreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ const AutomaticPayScreen = ({ route }) => {
);
useEffect(()=> {
if(criteria == "PEPS"){
setDataAll(clientInfo.NotasPendientes.sort((a, b) => a.Fecha - b.Fecha));
setDataAll(clientInfo.NotasPendientes.sort((a, b) => b.Fecha - a.Fecha));
}else if(criteria == "UEPS"){
setDataAll(clientInfo.NotasPendientes.sort((a, b) => b.Fecha - a.Fecha));
setDataAll(clientInfo.NotasPendientes.sort((a, b) => a.Fecha - b.Fecha));
}else if(criteria == "MayorMenor"){
setDataAll(clientInfo.NotasPendientes.sort((a, b) => b.Saldo_pendiente - a.Saldo_pendiente));
}else{
Expand Down Expand Up @@ -82,62 +82,38 @@ const AutomaticPayScreen = ({ route }) => {
const onSubmit = (data) => {
console.log(data);
let index = 0;
let auxiAmount = data.amount;
while(index < dataAll.length && data.amount > 0){
auxiAmount = data.amount;
if(data.amount > dataAll[index].Saldo_pendiente){
data.amount -= dataAll[index].Saldo_pendiente;
dataAll[index].Saldo_pendiente = 0;
dataAll[index].Monto_pagado = dataAll[index].importe_nota;
}else{
dataAll[index].Saldo_pendiente -= data.amount;
dataAll[index].Monto_pagado += data.amount;
data.amount = 0;
if(dataAll[index].Saldo_pendiente === 0){}else{
if(data.amount > dataAll[index].Saldo_pendiente){
data.amount -= dataAll[index].Saldo_pendiente;
dataAll[index].Saldo_pendiente = 0;
dataAll[index].Monto_pagado = parseFloat(dataAll[index].importe_nota);
}else{
dataAll[index].Saldo_pendiente -= parseFloat(data.amount);
dataAll[index].Monto_pagado += parseFloat(data.amount);
data.amount = 0;
}
updateNota(dataAll[index].id, {Saldo_pendiente: dataAll[index].Saldo_pendiente, Monto_pagado: parseFloat(dataAll[index].Monto_pagado)});
agregarPago({
cta_deposito: selectedBank,
cuenta: dataAll[index].Cuenta|| "",
empresa_id: user.empresa_id,
fecha: selectedDate,
fecha_registro: dataAll[index].Fecha_venta|| "",
modo_pago: method,
moneda: selectedCurrency,
monto: dataAll[index].Monto_pagado,
nro_factura: dataAll[index].nro_nota|| "",
observaciones: data.observations|| "",
pago_a_nota: dataAll[index].id|| "",
referencia: data.reference|| "",
sucursal_id: dataAll[index].sucursal_id|| "",
})
}
updateNota(dataAll[index].id, {Saldo_pendiente: dataAll[index].Saldo_pendiente, Monto_pagado: dataAll[index].Monto_pagado});
agregarPago({
cta_deposito: selectedBank,
cuenta: dataAll[index].Cuenta|| "",
empresa_id: user.empresa_id,
fecha: selectedDate,
fecha_registro: dataAll[index].Fecha_venta|| "",
modo_pago: method,
moneda: selectedCurrency,
monto: dataAll[index].Monto_pagado,
nro_factura: dataAll[index].nro_nota|| "",
observaciones: data.observations|| "",
pago_a_nota: dataAll[index].id|| "",
referencia: data.reference|| "",
sucursal_id: dataAll[index].sucursal_id|| "",
})
index++;
}
console.log("Pagos realizados");
navigation.goBack();
// PaymentStore.getState().agregarPago({
// numeroNota: note.nro_nota,
// fechaNota: note.Fecha,
// total: note.importe_nota,
// pagado: data.amount,
// });
// updateNota(note.id, {Saldo_pendiente: note.Saldo_pendiente - parseFloat(data.amount), Monto_pagado: note.Monto_pagado + parseFloat(data.amount) });
// agregarPago({
// cta_deposito: selectedBank,
// cuenta: note.Cuenta|| "",
// empresa_id: user.empresa_id,
// fecha: selectedDate,
// fecha_registro: note.Fecha_venta|| "",
// modo_pago: method,
// moneda: selectedCurrency,
// monto: data.amount|| "",
// nro_factura: note.nro_nota|| "",
// observaciones: data.observations|| "",
// pago_a_nota: note.id|| "",
// referencia: data.reference|| "",
// sucursal_id: note.sucursal_id|| "",
// })
// console.log("Pagos realizados:", PaymentStore.getState().pagosRealizados);
// navigation.goBack();
};

return (
Expand Down Expand Up @@ -171,7 +147,7 @@ const AutomaticPayScreen = ({ route }) => {
rules={{
required: "Este campo es requerido",
pattern: {
value: /^[0-9]+[.][0-9]{0,2}$/,
value: /^[0-9]+([.][0-9]{0,2})?$/,
message: "Ingrese solo números",
},
}}
Expand Down
2 changes: 1 addition & 1 deletion src/screens/PayScreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ const PayScreen = ({ route }) => {
rules={{
required: "Este campo es requerido",
pattern: {
value: /^[0-9]+[.][0-9]{0,2}$/,
value: /^[0-9]+([.][0-9]{0,2})?$/,
message: "Ingrese solo números",
},
}}
Expand Down
18 changes: 16 additions & 2 deletions src/stores/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const useStore = create((set, get) => ({
clientes: [],
notasPendientes: [],
clientesConNotas: [],
pagosRealizados: [],

subscribeToData: () => {
const unsubscribeClientes = onSnapshot(collection(db, 'clientes'), (snapshot) => {
Expand All @@ -22,26 +23,39 @@ const useStore = create((set, get) => ({
// console.log("Notas pendientes actualizadas en tiempo real");
});

const unsubscribePagos = onSnapshot(collection(db, 'notas_cobradas'), (snapshot) => {
const pagosRealizados = snapshot.docs.map(doc => ({ id: doc.id, ...doc.data() }));
set({ pagosRealizados });
// console.log("Pagos realizados actualizados en tiempo real");
});
return () => {
unsubscribeClientes();
unsubscribeNotas();
unsubscribePagos();
};
},

combinarClientesConNotas: () => {
const { clientes, notasPendientes } = get();
const { clientes, notasPendientes, pagosRealizados } = get();
const mapaNotasPorCuenta = notasPendientes.reduce((acc, nota) => {
const cuenta = nota.Cuenta?.trim();
acc[cuenta] = acc[cuenta] || [];
acc[cuenta].push(nota);
return acc;
}, {});

const mapaPagados = pagosRealizados.reduce((acc, pago) => {
const cuenta = pago.cuenta?.trim();
acc[cuenta] = acc[cuenta] || [];
acc[cuenta].push(pago);
return acc;
}, {});
const clientesConNotas = clientes.map(cliente => {
const cuentaCliente = cliente.Cuenta?.trim();
return {
...cliente,
NotasPendientes: mapaNotasPorCuenta[cuentaCliente] || []
NotasPendientes: mapaNotasPorCuenta[cuentaCliente] || [],
PagosRealizados: mapaPagados[cuentaCliente] || [],
};
});

Expand Down

0 comments on commit 5d9b300

Please sign in to comment.