From fb1a79ae3f4326edc7f74de5f6b536e4d238ff1d Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Apr 2023 17:50:17 -0500 Subject: [PATCH] Se le agregan columnas al reporte de Amazon Operaciones pagadas --- .env.development | 2 + .env.production | 2 + .env.qa | 2 + package.json | 8 +- .../Amazon/DTO/DTO2096RptPayedOperations.ts | 25 +++++ .../Payed/RptAmazonPayedOperations.tsx | 87 +++++++++++++----- .../Pending/RtpAmazonPendingTraficInvoice.tsx | 17 +++- .../Amazon/Services/Amazon.Services.ts | 5 +- src/Constants/TargetURL.ts | 11 ++- src/css/development-home.css | 60 ++++++++++++ src/css/home.css | 2 +- src/css/production-home.css | 60 ++++++++++++ src/css/qa-home.css | 60 ++++++++++++ src/images/QA.png | Bin 0 -> 18329 bytes src/index.tsx | 6 +- yarn.lock | 13 +++ 16 files changed, 321 insertions(+), 39 deletions(-) create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .env.qa create mode 100644 src/Components/Clientes/Amazon/DTO/DTO2096RptPayedOperations.ts create mode 100644 src/css/development-home.css create mode 100644 src/css/production-home.css create mode 100644 src/css/qa-home.css create mode 100644 src/images/QA.png diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..03c3358 --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +REACT_APP_ENVIRONMENT=development +REACT_APP_API=https://localhost:5001/api \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..2c5da53 --- /dev/null +++ b/.env.production @@ -0,0 +1,2 @@ +REACT_APP_ENVIRONMENT=production +REACT_APP_API=https://www.gemcousa.mx/GEMCOBackend/api diff --git a/.env.qa b/.env.qa new file mode 100644 index 0000000..fbba01d --- /dev/null +++ b/.env.qa @@ -0,0 +1,2 @@ +REACT_APP_ENVIRONMENT=qa +REACT_APP_API=https://www.gemcousa.solutions/GEMCOBackend/api \ No newline at end of file diff --git a/package.json b/package.json index 3a861a9..7bd717d 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "bootstrap": "^5.1.3", "btoa": "^1.2.1", "custom-item-select": "^1.2.3", + "env-cmd": "^10.1.0", "file-saver": "^2.0.5", "formik": "^2.2.9", "jwt-decode": "^3.1.2", @@ -59,8 +60,11 @@ "yup": "^0.32.11" }, "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", + "start-dev": "env-cmd -f .env.development react-scripts start", + "start-qa": "env-cmd -f .env.qa react-scripts start", + "start-prod": "env-cmd -f .env.production react-scripts start", + "build-qa": "env-cmd -f .env.qa react-scripts build", + "build-prod": "env-cmd -f .env.production react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, diff --git a/src/Components/Clientes/Amazon/DTO/DTO2096RptPayedOperations.ts b/src/Components/Clientes/Amazon/DTO/DTO2096RptPayedOperations.ts new file mode 100644 index 0000000..61f08be --- /dev/null +++ b/src/Components/Clientes/Amazon/DTO/DTO2096RptPayedOperations.ts @@ -0,0 +1,25 @@ +export default interface DTO2096RptPayedOperations { + id: number + referencia: string + commercialInvoiceDate: string + invoiceNumber: string + name: string + trailerNumber: string + trailerId: string + porOfLoading: string + portOfEntry: string + paymentsTerms: string + incoterms: string + hawb: string + totalInvoiceQuantityUnitOfMeasure: string + totalInvoiceQuantity: number + totalInvoiceWeightUnitOfMeasure: string + totalInvoiceWeight: string + totalInvoiceValueChargeOrAllowance: string + totalInvoiceValueCurrencyISOCode: string + totalInvoiceValueMonetaryAmount: string, + fPago: string, + patente: string, + aduana: string, + pedimento: string +} \ No newline at end of file diff --git a/src/Components/Clientes/Amazon/Reportes/Payed/RptAmazonPayedOperations.tsx b/src/Components/Clientes/Amazon/Reportes/Payed/RptAmazonPayedOperations.tsx index 58e24a3..37d2ff3 100644 --- a/src/Components/Clientes/Amazon/Reportes/Payed/RptAmazonPayedOperations.tsx +++ b/src/Components/Clientes/Amazon/Reportes/Payed/RptAmazonPayedOperations.tsx @@ -27,6 +27,7 @@ import { BsChevronDown, BsChevronRight, BsFilePdfFill } from 'react-icons/bs' import { FaAmazon } from 'react-icons/fa' import loadingImg from '../../../../../images/ajaxloader.gif' import { MFileManager } from '../../../../Utils/MFileManager/MFileManager' +import DTO2096RptPayedOperations from '../../DTO/DTO2096RptPayedOperations' export interface IRptAmazonPayedOpereationsProps {} @@ -39,6 +40,9 @@ export default function RptAmazonPayedOpereations( ) const [header, setHeader] = useState('') const [Referencia, setReferencia] = useState('') + const [Inicio, setInicio] = useState(currentDate()) + const [Fin, setFin] = useState(currentDate()) + const [Data, setData] = useState([]) const [show, setShowMsg] = useState(false) const [ShowModal, setShowModal] = useState(false) const [WaitingDialog, setWaitingDialog] = useState(false) @@ -50,11 +54,21 @@ export default function RptAmazonPayedOpereations( const [Invoices, setInvoices] = useState([]) const msgColor = 'primary' + function currentDate(): string { + var today = new Date() + var dd = String(today.getDate()).padStart(2, '0') + var mm = String(today.getMonth() + 1).padStart(2, '0') //January is 0! + var yyyy = today.getFullYear() + return yyyy + '-' + mm + '-' + dd + } + const loadReport = () => { - DSAmazon.AmazonPayedOperationsGET() + DSAmazon.AmazonPayedOperationsGET(Inicio, Fin) .then((response) => { - dispatch(initializeInvoice([])) - dispatch(populateInvoices(response.data)) + console.log(response.data) + setData(response.data) + /* dispatch(initializeInvoice([])) + dispatch(populateInvoices(response.data)) */ }) .catch((e: Error) => { alert('Ocurrio un error' + e.message.toString()) @@ -129,7 +143,6 @@ export default function RptAmazonPayedOpereations( } const downloadNoPartes = (id: number, Factura: string) => { - // setWaitingDialog(true) DSAmazon.NoPartesAmazon2SIRGET(id) .then((response: any) => { if (response.status === 200) { @@ -170,8 +183,35 @@ export default function RptAmazonPayedOpereations( Operaciones Pagadas - + Desde + + setInicio(e.target.value)} + size="sm" + /> + + Hasta + + setFin(e.target.value)} + size="sm" + /> + + {loadReport()}}> @@ -200,21 +240,20 @@ export default function RptAmazonPayedOpereations( Tot Charge or allowance Tot currency ISO code Tot Monetary amount - Total de partidas + Fecha pago + Patente + Aduana + Pedimento - {mInvoices - ? mInvoices.map((MasterData) => { + {Data + ? Data.map((MasterData) => { return ( <> {MasterData.totalInvoiceValueMonetaryAmount} - - {mInvoices - .filter((value) => value.id === MasterData.id) - .map((row) => { - return row.detail.length - })} + + {MasterData.fPago.substring(0,10)} + + + {MasterData.patente} + + + {MasterData.aduana} + + + {MasterData.pedimento} diff --git a/src/Components/Clientes/Amazon/Reportes/Traffic/Pending/RtpAmazonPendingTraficInvoice.tsx b/src/Components/Clientes/Amazon/Reportes/Traffic/Pending/RtpAmazonPendingTraficInvoice.tsx index 840b926..477b1c8 100644 --- a/src/Components/Clientes/Amazon/Reportes/Traffic/Pending/RtpAmazonPendingTraficInvoice.tsx +++ b/src/Components/Clientes/Amazon/Reportes/Traffic/Pending/RtpAmazonPendingTraficInvoice.tsx @@ -90,6 +90,13 @@ export default function RptAmazonPendingTraficInvoice( }) } + function getReceiver(Cadena: string, char1: string[1], char2: string[1]) { + return Cadena.slice( + Cadena.indexOf(char1) + 1, + Cadena.lastIndexOf(char2), + ); + } + return (
@@ -123,7 +130,7 @@ export default function RptAmazonPendingTraficInvoice( Commercial Invoice Date Invoice Number - Name + Receiver Incoterms Qty Unit of measure Tot Qty @@ -195,8 +202,12 @@ export default function RptAmazonPendingTraficInvoice( {MasterData.invoiceNumber} - - {MasterData.name} + + {mInvoices + .filter((value) => value.id === MasterData.id) + .map((row) => { + return getReceiver(row.detail[0].amazonShipmentReferenceId,'_','_') + })} {MasterData.incoterms} diff --git a/src/Components/Clientes/Amazon/Services/Amazon.Services.ts b/src/Components/Clientes/Amazon/Services/Amazon.Services.ts index 0c33efb..2feddc5 100644 --- a/src/Components/Clientes/Amazon/Services/Amazon.Services.ts +++ b/src/Components/Clientes/Amazon/Services/Amazon.Services.ts @@ -16,6 +16,7 @@ import DTO2096NoParte from '../DTO/DTO2096NoParte' import I2096NoParteLog from '../Interfaces/I2096NoParteLog' import DTO2096TraficoFieldsUpdate from '../DTO/DTO2096TraficoFieldsUpdate' import DTO2096RELParteFactura from '../DTO/DTO2096RELParteFactura' +import DTO2096RptPayedOperations from '../DTO/DTO2096RptPayedOperations' class AmazonDataService { AmazonPendingClasificationInvoiceGET() { @@ -67,8 +68,8 @@ class AmazonDataService { } - AmazonPayedOperationsGET() { - return http.get(`/AmazonInvoice/AmazonPayedOperationsGET`) + AmazonPayedOperationsGET(Inicio: string, Fin: string) { + return http.get(`/AmazonInvoice/AmazonPayedOperationsGET?Inicio=${Inicio}&Fin=${Fin}`) } RELParteFacturasGET(id: number) { diff --git a/src/Constants/TargetURL.ts b/src/Constants/TargetURL.ts index 8157f3c..7765ec9 100644 --- a/src/Constants/TargetURL.ts +++ b/src/Constants/TargetURL.ts @@ -1,10 +1,11 @@ export class TargetURL { get() { - return !process.env.NODE_ENV || process.env.NODE_ENV === 'development' - ? //'https://gemcousa.solutions/GEMCOBackend/api' + /* return !process.env.NODE_ENV || process.env.NODE_ENV === 'development' + ? 'https://gemcousa.solutions/GEMCOBackend/api' 'https://localhost:5001/api' - : //: "http://reportes.gemcousa.com:5000/api"; - // 'https://www.gemcousa.mx/GEMCOBackend/api' - 'https://gemcousa.solutions/GEMCOBackend/api' + : "http://reportes.gemcousa.com:5000/api"; + 'https://www.gemcousa.mx/GEMCOBackend/api' + 'https://gemcousa.solutions/GEMCOBackend/api' */ + return process.env.REACT_APP_API } } diff --git a/src/css/development-home.css b/src/css/development-home.css new file mode 100644 index 0000000..666aac8 --- /dev/null +++ b/src/css/development-home.css @@ -0,0 +1,60 @@ +/*** FONDO PARA SITIO WEB ***/ +body { + background-image: linear-gradient(to right, #F7FFF1, #EFFFE2, #EFFFE2, white, white, white, #EFFFE2, #EFFFE2, #F7FFF1); +} + +/*** COLOR DE TEXTO PARA ETIQUETAS EN FORMS, ENCABEZADOS DE FORMS Y BOTON DE ACCORDIONS ***/ +#login-box h3, .navbar-nav a.dropdown-item:hover, .form-group .label, .form-group label { + color: #0a58ca !important; +} + +/*** DISEÑO PARA FORM DEL LOGIN ***/ +#login-box { + margin: 0 auto; + border-radius: 15px !important; + border: none; +} + +/*** ACOMODO SUPERIOR PARA LOS DIV.CONTAINER'S EN SITIO WEB ***/ +div.App > div.container { + margin-top: 30px !important; +} + +/*** ESTILOS PARA LA BARRA DEL MENU ***/ +.custom-theme { + background-image: linear-gradient(to bottom, #4a9d06,#5cb90f,#7fda35) !important; + color: white; +} +.navbar-brand, .navbar-nav .dropdown-toggle.nav-link, .navbar-collapse .btn-outline-success, #basic-navbar-nav a.nav-link, .navbar-toggler-icon { + color: white; +} + +/* .dropdown-toggle2 { + color: black !important; + background-color: #c8ced3 !important; +} */ +#secondlevel { + color: black !important; + padding: 0.25rem 1rem; + /* background-color: #c8ced3 !important; */ +} + +/* #secondlevel a:link { color: #000000 !important; } +#secondlevel a:visited { color: #000000 !important; } +#secondlevel a:hover { color: #000000 !important; } +#secondlevel a:active { color: #000000 !important; } */ + +/*** ESTILO DE LETRA PARA ELEMENTOS DE ACCORDION ***/ +.accordion-button.collapsed { + background-image: linear-gradient(to bottom, #c7c7c7, #c7c7c7, #e9e9e9, #f3f3f3) !important; +} +.accordion-button:not(.collapsed) { + background-image: linear-gradient(to bottom, #8fcafd, #bedaff, #e5eefb); + font-size: 13pt; +} + +@media all and (min-width: 480px) { + #login-box { + border: 3px outset #ddd !important; + } +} \ No newline at end of file diff --git a/src/css/home.css b/src/css/home.css index e6c8df8..1dcbefa 100644 --- a/src/css/home.css +++ b/src/css/home.css @@ -1,6 +1,6 @@ /*** FONDO PARA SITIO WEB ***/ body { - background-image: linear-gradient(to right, rgb(215,215,215), rgb(245,245,245), rgb(245,245,245), white, white, white, rgb(245,245,245), rgb(245,245,245), rgb(215,215,215)) !important; + background-image: linear-gradient(to right, rgb(215,215,215), rgb(245,245,245), rgb(245,245,245), white, white, white, rgb(245,245,245), rgb(245,245,245), rgb(215,215,215)); } /*** COLOR DE TEXTO PARA ETIQUETAS EN FORMS, ENCABEZADOS DE FORMS Y BOTON DE ACCORDIONS ***/ diff --git a/src/css/production-home.css b/src/css/production-home.css new file mode 100644 index 0000000..1dcbefa --- /dev/null +++ b/src/css/production-home.css @@ -0,0 +1,60 @@ +/*** FONDO PARA SITIO WEB ***/ +body { + background-image: linear-gradient(to right, rgb(215,215,215), rgb(245,245,245), rgb(245,245,245), white, white, white, rgb(245,245,245), rgb(245,245,245), rgb(215,215,215)); +} + +/*** COLOR DE TEXTO PARA ETIQUETAS EN FORMS, ENCABEZADOS DE FORMS Y BOTON DE ACCORDIONS ***/ +#login-box h3, .navbar-nav a.dropdown-item:hover, .form-group .label, .form-group label { + color: #0a58ca !important; +} + +/*** DISEÑO PARA FORM DEL LOGIN ***/ +#login-box { + margin: 0 auto; + border-radius: 15px !important; + border: none; +} + +/*** ACOMODO SUPERIOR PARA LOS DIV.CONTAINER'S EN SITIO WEB ***/ +div.App > div.container { + margin-top: 30px !important; +} + +/*** ESTILOS PARA LA BARRA DEL MENU ***/ +.custom-theme { + background-image: linear-gradient(to bottom, rgb(0, 75, 187),rgb(0, 113, 219),rgb(64, 150, 248)) !important; + color: white; +} +.navbar-brand, .navbar-nav .dropdown-toggle.nav-link, .navbar-collapse .btn-outline-success, #basic-navbar-nav a.nav-link, .navbar-toggler-icon { + color: white; +} + +/* .dropdown-toggle2 { + color: black !important; + background-color: #c8ced3 !important; +} */ +#secondlevel { + color: black !important; + padding: 0.25rem 1rem; + /* background-color: #c8ced3 !important; */ +} + +/* #secondlevel a:link { color: #000000 !important; } +#secondlevel a:visited { color: #000000 !important; } +#secondlevel a:hover { color: #000000 !important; } +#secondlevel a:active { color: #000000 !important; } */ + +/*** ESTILO DE LETRA PARA ELEMENTOS DE ACCORDION ***/ +.accordion-button.collapsed { + background-image: linear-gradient(to bottom, #c7c7c7, #c7c7c7, #e9e9e9, #f3f3f3) !important; +} +.accordion-button:not(.collapsed) { + background-image: linear-gradient(to bottom, #8fcafd, #bedaff, #e5eefb); + font-size: 13pt; +} + +@media all and (min-width: 480px) { + #login-box { + border: 3px outset #ddd !important; + } +} \ No newline at end of file diff --git a/src/css/qa-home.css b/src/css/qa-home.css new file mode 100644 index 0000000..2312969 --- /dev/null +++ b/src/css/qa-home.css @@ -0,0 +1,60 @@ +/*** FONDO PARA SITIO WEB ***/ +body { + background-image: url("../images/QA.png"), linear-gradient(to right, #FFFEE2, #FFFED5, #FFFED5, white, white, white, #FFFED5, #FFFED5, #FFFEE2); +} + +/*** COLOR DE TEXTO PARA ETIQUETAS EN FORMS, ENCABEZADOS DE FORMS Y BOTON DE ACCORDIONS ***/ +#login-box h3, .navbar-nav a.dropdown-item:hover, .form-group .label, .form-group label { + color: #0a58ca !important; +} + +/*** DISEÑO PARA FORM DEL LOGIN ***/ +#login-box { + margin: 0 auto; + border-radius: 15px !important; + border: none; +} + +/*** ACOMODO SUPERIOR PARA LOS DIV.CONTAINER'S EN SITIO WEB ***/ +div.App > div.container { + margin-top: 30px !important; +} + +/*** ESTILOS PARA LA BARRA DEL MENU ***/ +.custom-theme { + background-image: linear-gradient(to bottom, #da6907,#cf7d34,#f0a35f) !important; + color: white; +} +.navbar-brand, .navbar-nav .dropdown-toggle.nav-link, .navbar-collapse .btn-outline-success, #basic-navbar-nav a.nav-link, .navbar-toggler-icon { + color: white; +} + +/* .dropdown-toggle2 { + color: black !important; + background-color: #c8ced3 !important; +} */ +#secondlevel { + color: black !important; + padding: 0.25rem 1rem; + /* background-color: #c8ced3 !important; */ +} + +/* #secondlevel a:link { color: #000000 !important; } +#secondlevel a:visited { color: #000000 !important; } +#secondlevel a:hover { color: #000000 !important; } +#secondlevel a:active { color: #000000 !important; } */ + +/*** ESTILO DE LETRA PARA ELEMENTOS DE ACCORDION ***/ +.accordion-button.collapsed { + background-image: linear-gradient(to bottom, #c7c7c7, #c7c7c7, #e9e9e9, #f3f3f3) !important; +} +.accordion-button:not(.collapsed) { + background-image: linear-gradient(to bottom, #8fcafd, #bedaff, #e5eefb); + font-size: 13pt; +} + +@media all and (min-width: 480px) { + #login-box { + border: 3px outset #ddd !important; + } +} \ No newline at end of file diff --git a/src/images/QA.png b/src/images/QA.png new file mode 100644 index 0000000000000000000000000000000000000000..418fdd1937496d6200b1beb5a0e20e34fe876949 GIT binary patch literal 18329 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 z zFsu}z{JA<{n5q;p41+HcO7`AYbES6*rqx8PNO3lqfo@uXBsnQ}F)r4~hD>2mrf3){ z$l?>3uFagp8Z%(I38uRgp?sG*sF-3PfKC#*6lw)f7^fhMVacBm=X8E5(~)P_P&qJ) z8V(cwqbO%RJ+!wIM0HKcbCg|4Wd2=@QUYZ}^B2&8#1zsmMc{Vj6~PIhDCP0d1Yarc zIh5IDN#!dfVNOebHUb1db-I-AZ1luLnM*O15h^nJi|L?Z3QfM3!YUa8ilHQ>6N&9m zG7qOfI@MGcics+^(zq!~bo3>oETJj7I&!I>4B!^xMhMfjn|26C|TU zNjwg>M^zvUc@nF)Hvu4<=$X@iRp#Meu~pS=F3E7zFGU9)Q kWdv)}gBcn9