diff --git a/app-shell/src/_schema.json b/app-shell/src/_schema.json index 542f23a..c14f422 100644 --- a/app-shell/src/_schema.json +++ b/app-shell/src/_schema.json @@ -1,4 +1,5 @@ { "Initial version": "{\"iv\":\"GSPKOPPXeibRLg44\",\"encryptedData\":\"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\"}", - "Updated via schema editor on 2025-07-09 18:08": "{\"iv\":\"j36utrM8isJFE70o\",\"encryptedData\":\"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\"}" + "Updated via schema editor on 2025-07-09 18:08": "{\"iv\":\"j36utrM8isJFE70o\",\"encryptedData\":\"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\"}", + "Updated via schema editor on 2025-07-09 18:54": "{\"iv\":\"2aK6FtxCQQ1ZSvQ6\",\"encryptedData\":\"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\"}" } \ No newline at end of file diff --git a/backend/src/db/api/documents.js b/backend/src/db/api/documents.js index c292c8d..564cb79 100644 --- a/backend/src/db/api/documents.js +++ b/backend/src/db/api/documents.js @@ -15,16 +15,15 @@ module.exports = class DocumentsDBApi { { id: data.id || undefined, + nameofemployee_organization: data.nameofemployee_organization || null, document_number: data.document_number || null, - document_type: data.document_type || null, - prepared_by: data.prepared_by || null, - status: data.status || null, - cash_balance: data.cash_balance || false, - - payment_date: data.payment_date || null, - amount: data.amount || null, + description: data.description || null, + date: data.date || null, + payment_type: data.payment_type || null, + Amount: data.Amount || null, + project_code: data.project_code || null, + document_status: data.document_status || null, shelf_number: data.shelf_number || null, - approved_by: data.approved_by || null, importHash: data.importHash || null, createdById: currentUser.id, updatedById: currentUser.id, @@ -32,10 +31,6 @@ module.exports = class DocumentsDBApi { { transaction }, ); - await documents.setProject(data.project || null, { - transaction, - }); - await documents.setOrganizations(data.organizations || null, { transaction, }); @@ -51,16 +46,15 @@ module.exports = class DocumentsDBApi { const documentsData = data.map((item, index) => ({ id: item.id || undefined, + nameofemployee_organization: item.nameofemployee_organization || null, document_number: item.document_number || null, - document_type: item.document_type || null, - prepared_by: item.prepared_by || null, - status: item.status || null, - cash_balance: item.cash_balance || false, - - payment_date: item.payment_date || null, - amount: item.amount || null, + description: item.description || null, + date: item.date || null, + payment_type: item.payment_type || null, + Amount: item.Amount || null, + project_code: item.project_code || null, + document_status: item.document_status || null, shelf_number: item.shelf_number || null, - approved_by: item.approved_by || null, importHash: item.importHash || null, createdById: currentUser.id, updatedById: currentUser.id, @@ -86,43 +80,36 @@ module.exports = class DocumentsDBApi { const updatePayload = {}; + if (data.nameofemployee_organization !== undefined) + updatePayload.nameofemployee_organization = + data.nameofemployee_organization; + if (data.document_number !== undefined) updatePayload.document_number = data.document_number; - if (data.document_type !== undefined) - updatePayload.document_type = data.document_type; + if (data.description !== undefined) + updatePayload.description = data.description; - if (data.prepared_by !== undefined) - updatePayload.prepared_by = data.prepared_by; + if (data.date !== undefined) updatePayload.date = data.date; - if (data.status !== undefined) updatePayload.status = data.status; + if (data.payment_type !== undefined) + updatePayload.payment_type = data.payment_type; - if (data.cash_balance !== undefined) - updatePayload.cash_balance = data.cash_balance; + if (data.Amount !== undefined) updatePayload.Amount = data.Amount; - if (data.payment_date !== undefined) - updatePayload.payment_date = data.payment_date; + if (data.project_code !== undefined) + updatePayload.project_code = data.project_code; - if (data.amount !== undefined) updatePayload.amount = data.amount; + if (data.document_status !== undefined) + updatePayload.document_status = data.document_status; if (data.shelf_number !== undefined) updatePayload.shelf_number = data.shelf_number; - if (data.approved_by !== undefined) - updatePayload.approved_by = data.approved_by; - updatePayload.updatedById = currentUser.id; await documents.update(updatePayload, { transaction }); - if (data.project !== undefined) { - await documents.setProject( - data.project, - - { transaction }, - ); - } - if (data.organizations !== undefined) { await documents.setOrganizations( data.organizations, @@ -196,10 +183,6 @@ module.exports = class DocumentsDBApi { transaction, }); - output.project = await documents.getProject({ - transaction, - }); - output.organizations = await documents.getOrganizations({ transaction, }); @@ -229,32 +212,6 @@ module.exports = class DocumentsDBApi { const transaction = (options && options.transaction) || undefined; let include = [ - { - model: db.projects, - as: 'project', - - where: filter.project - ? { - [Op.or]: [ - { - id: { - [Op.in]: filter.project - .split('|') - .map((term) => Utils.uuid(term)), - }, - }, - { - name: { - [Op.or]: filter.project - .split('|') - .map((term) => ({ [Op.iLike]: `%${term}%` })), - }, - }, - ], - } - : {}, - }, - { model: db.organizations, as: 'organizations', @@ -269,6 +226,17 @@ module.exports = class DocumentsDBApi { }; } + if (filter.nameofemployee_organization) { + where = { + ...where, + [Op.and]: Utils.ilike( + 'documents', + 'nameofemployee_organization', + filter.nameofemployee_organization, + ), + }; + } + if (filter.document_number) { where = { ...where, @@ -280,10 +248,21 @@ module.exports = class DocumentsDBApi { }; } - if (filter.prepared_by) { + if (filter.description) { where = { ...where, - [Op.and]: Utils.ilike('documents', 'prepared_by', filter.prepared_by), + [Op.and]: Utils.ilike('documents', 'description', filter.description), + }; + } + + if (filter.project_code) { + where = { + ...where, + [Op.and]: Utils.ilike( + 'documents', + 'project_code', + filter.project_code, + ), }; } @@ -298,21 +277,14 @@ module.exports = class DocumentsDBApi { }; } - if (filter.approved_by) { - where = { - ...where, - [Op.and]: Utils.ilike('documents', 'approved_by', filter.approved_by), - }; - } - - if (filter.payment_dateRange) { - const [start, end] = filter.payment_dateRange; + if (filter.dateRange) { + const [start, end] = filter.dateRange; if (start !== undefined && start !== null && start !== '') { where = { ...where, - payment_date: { - ...where.payment_date, + date: { + ...where.date, [Op.gte]: start, }, }; @@ -321,22 +293,22 @@ module.exports = class DocumentsDBApi { if (end !== undefined && end !== null && end !== '') { where = { ...where, - payment_date: { - ...where.payment_date, + date: { + ...where.date, [Op.lte]: end, }, }; } } - if (filter.amountRange) { - const [start, end] = filter.amountRange; + if (filter.AmountRange) { + const [start, end] = filter.AmountRange; if (start !== undefined && start !== null && start !== '') { where = { ...where, - amount: { - ...where.amount, + Amount: { + ...where.Amount, [Op.gte]: start, }, }; @@ -345,8 +317,8 @@ module.exports = class DocumentsDBApi { if (end !== undefined && end !== null && end !== '') { where = { ...where, - amount: { - ...where.amount, + Amount: { + ...where.Amount, [Op.lte]: end, }, }; @@ -360,24 +332,17 @@ module.exports = class DocumentsDBApi { }; } - if (filter.document_type) { + if (filter.payment_type) { where = { ...where, - document_type: filter.document_type, + payment_type: filter.payment_type, }; } - if (filter.status) { + if (filter.document_status) { where = { ...where, - status: filter.status, - }; - } - - if (filter.cash_balance) { - where = { - ...where, - cash_balance: filter.cash_balance, + document_status: filter.document_status, }; } @@ -468,22 +433,22 @@ module.exports = class DocumentsDBApi { where = { [Op.or]: [ { ['id']: Utils.uuid(query) }, - Utils.ilike('documents', 'document_number', query), + Utils.ilike('documents', 'id', query), ], }; } const records = await db.documents.findAll({ - attributes: ['id', 'document_number'], + attributes: ['id', 'id'], where, limit: limit ? Number(limit) : undefined, offset: offset ? Number(offset) : undefined, - orderBy: [['document_number', 'ASC']], + orderBy: [['id', 'ASC']], }); return records.map((record) => ({ id: record.id, - label: record.document_number, + label: record.id, })); } }; diff --git a/backend/src/db/api/organizations.js b/backend/src/db/api/organizations.js index 0b896d2..102914f 100644 --- a/backend/src/db/api/organizations.js +++ b/backend/src/db/api/organizations.js @@ -169,6 +169,15 @@ module.exports = class OrganizationsDBApi { transaction, }); + output.departments_organizations = + await organizations.getDepartments_organizations({ + transaction, + }); + + output.places_organizations = await organizations.getPlaces_organizations({ + transaction, + }); + return output; } @@ -295,22 +304,22 @@ module.exports = class OrganizationsDBApi { where = { [Op.or]: [ { ['id']: Utils.uuid(query) }, - Utils.ilike('organizations', 'name', query), + Utils.ilike('organizations', 'id', query), ], }; } const records = await db.organizations.findAll({ - attributes: ['id', 'name'], + attributes: ['id', 'id'], where, limit: limit ? Number(limit) : undefined, offset: offset ? Number(offset) : undefined, - orderBy: [['name', 'ASC']], + orderBy: [['id', 'ASC']], }); return records.map((record) => ({ id: record.id, - label: record.name, + label: record.id, })); } }; diff --git a/backend/src/db/api/payments.js b/backend/src/db/api/payments.js index 12fef6a..14abbbe 100644 --- a/backend/src/db/api/payments.js +++ b/backend/src/db/api/payments.js @@ -208,7 +208,7 @@ module.exports = class PaymentsDBApi { }, }, { - document_number: { + id: { [Op.or]: filter.document .split('|') .map((term) => ({ [Op.iLike]: `%${term}%` })), diff --git a/backend/src/db/api/projects.js b/backend/src/db/api/projects.js index 2597850..51e5ec7 100644 --- a/backend/src/db/api/projects.js +++ b/backend/src/db/api/projects.js @@ -158,10 +158,6 @@ module.exports = class ProjectsDBApi { const output = projects.get({ plain: true }); - output.documents_project = await projects.getDocuments_project({ - transaction, - }); - output.field_site_payment_requisitions_project = await projects.getField_site_payment_requisitions_project({ transaction, diff --git a/backend/src/db/migrations/1751986477256.js b/backend/src/db/migrations/1751986477256.js new file mode 100644 index 0000000..e6bfba3 --- /dev/null +++ b/backend/src/db/migrations/1751986477256.js @@ -0,0 +1,36 @@ +module.exports = { + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async up(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async down(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, +}; diff --git a/backend/src/db/migrations/1752087244997.js b/backend/src/db/migrations/1752087244997.js new file mode 100644 index 0000000..5f7e13a --- /dev/null +++ b/backend/src/db/migrations/1752087244997.js @@ -0,0 +1,363 @@ +module.exports = { + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async up(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + await queryInterface.createTable( + 'organizations', + { + id: { + type: Sequelize.DataTypes.UUID, + defaultValue: Sequelize.DataTypes.UUIDV4, + primaryKey: true, + }, + createdById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + updatedById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + createdAt: { type: Sequelize.DataTypes.DATE }, + updatedAt: { type: Sequelize.DataTypes.DATE }, + deletedAt: { type: Sequelize.DataTypes.DATE }, + importHash: { + type: Sequelize.DataTypes.STRING(255), + allowNull: true, + unique: true, + }, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'organizations', + 'name', + { + type: Sequelize.DataTypes.TEXT, + }, + { transaction }, + ); + + await queryInterface.removeColumn('documents', 'document_numner', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'projectId', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'document_type', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'prepared_by', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'status', { transaction }); + + await queryInterface.removeColumn('documents', 'cash_balance', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'payment_date', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'amount', { transaction }); + + await queryInterface.removeColumn('documents', 'shelf_number', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'approved_by', { + transaction, + }); + + await queryInterface.addColumn( + 'documents', + 'document_number', + { + type: Sequelize.DataTypes.TEXT, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'description', + { + type: Sequelize.DataTypes.TEXT, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'date', + { + type: Sequelize.DataTypes.DATEONLY, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'payment_type', + { + type: Sequelize.DataTypes.ENUM, + + values: ['BPV', 'JV', 'RV', 'CPV'], + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'Amount', + { + type: Sequelize.DataTypes.DECIMAL, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'project_code', + { + type: Sequelize.DataTypes.TEXT, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'document_status', + { + type: Sequelize.DataTypes.ENUM, + + values: ['Approved', 'Complete', 'On progress', 'Filled'], + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'shelf_number', + { + type: Sequelize.DataTypes.TEXT, + }, + { transaction }, + ); + + await queryInterface.dropTable('organizations', { transaction }); + + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async down(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + await queryInterface.removeColumn('documents', 'shelf_number', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'document_status', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'project_code', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'Amount', { transaction }); + + await queryInterface.removeColumn('documents', 'payment_type', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'date', { transaction }); + + await queryInterface.removeColumn('documents', 'description', { + transaction, + }); + + await queryInterface.removeColumn('documents', 'document_number', { + transaction, + }); + + await queryInterface.addColumn( + 'documents', + 'approved_by', + { + type: Sequelize.DataTypes.TEXT, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'shelf_number', + { + type: Sequelize.DataTypes.TEXT, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'amount', + { + type: Sequelize.DataTypes.DECIMAL, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'payment_date', + { + type: Sequelize.DataTypes.DATE, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'cash_balance', + { + type: Sequelize.DataTypes.BOOLEAN, + + defaultValue: false, + allowNull: false, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'status', + { + type: Sequelize.DataTypes.ENUM, + + values: ['Filed', 'InProgress'], + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'prepared_by', + { + type: Sequelize.DataTypes.TEXT, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'document_type', + { + type: Sequelize.DataTypes.ENUM, + + values: ['BPV', 'JV', 'RV'], + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'projectId', + { + type: Sequelize.DataTypes.UUID, + + references: { + model: 'projects', + key: 'id', + }, + }, + { transaction }, + ); + + await queryInterface.addColumn( + 'documents', + 'document_numner', + { + type: Sequelize.DataTypes.TEXT, + }, + { transaction }, + ); + + await queryInterface.removeColumn('organizations', 'name', { + transaction, + }); + + await queryInterface.dropTable('organizations', { transaction }); + + await queryInterface.createTable( + 'organizations', + { + id: { + type: Sequelize.DataTypes.UUID, + defaultValue: Sequelize.DataTypes.UUIDV4, + primaryKey: true, + }, + createdById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + updatedById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + createdAt: { type: Sequelize.DataTypes.DATE }, + updatedAt: { type: Sequelize.DataTypes.DATE }, + deletedAt: { type: Sequelize.DataTypes.DATE }, + importHash: { + type: Sequelize.DataTypes.STRING(255), + allowNull: true, + unique: true, + }, + }, + { transaction }, + ); + + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, +}; diff --git a/backend/src/db/models/documents.js b/backend/src/db/models/documents.js index f6718a3..5e91e35 100644 --- a/backend/src/db/models/documents.js +++ b/backend/src/db/models/documents.js @@ -14,46 +14,49 @@ module.exports = function (sequelize, DataTypes) { primaryKey: true, }, + nameofemployee_organization: { + type: DataTypes.TEXT, + }, + document_number: { type: DataTypes.TEXT, }, - document_type: { - type: DataTypes.ENUM, - - values: ['BPV', 'JV', 'RV'], - }, - - prepared_by: { + description: { type: DataTypes.TEXT, }, - status: { + date: { + type: DataTypes.DATEONLY, + + get: function () { + return this.getDataValue('date') + ? moment.utc(this.getDataValue('date')).format('YYYY-MM-DD') + : null; + }, + }, + + payment_type: { type: DataTypes.ENUM, - values: ['Filed', 'InProgress'], + values: ['BPV', 'JV', 'RV', 'CPV'], }, - cash_balance: { - type: DataTypes.BOOLEAN, - - allowNull: false, - defaultValue: false, - }, - - payment_date: { - type: DataTypes.DATE, - }, - - amount: { + Amount: { type: DataTypes.DECIMAL, }, - shelf_number: { + project_code: { type: DataTypes.TEXT, }, - approved_by: { + document_status: { + type: DataTypes.ENUM, + + values: ['Approved', 'Complete', 'On progress', 'Filled'], + }, + + shelf_number: { type: DataTypes.TEXT, }, @@ -83,14 +86,6 @@ module.exports = function (sequelize, DataTypes) { //end loop - db.documents.belongsTo(db.projects, { - as: 'project', - foreignKey: { - name: 'projectId', - }, - constraints: false, - }); - db.documents.belongsTo(db.organizations, { as: 'organizations', foreignKey: { diff --git a/backend/src/db/models/projects.js b/backend/src/db/models/projects.js index c39913e..0917b7d 100644 --- a/backend/src/db/models/projects.js +++ b/backend/src/db/models/projects.js @@ -44,14 +44,6 @@ module.exports = function (sequelize, DataTypes) { projects.associate = (db) => { /// loop through entities and it's fields, and if ref === current e[name] and create relation has many on parent entity - db.projects.hasMany(db.documents, { - as: 'documents_project', - foreignKey: { - name: 'projectId', - }, - constraints: false, - }); - db.projects.hasMany(db.field_site_payment_requisitions, { as: 'field_site_payment_requisitions_project', foreignKey: { diff --git a/backend/src/db/seeders/20200430130760-user-roles.js b/backend/src/db/seeders/20200430130760-user-roles.js index 617bbe1..29f454e 100644 --- a/backend/src/db/seeders/20200430130760-user-roles.js +++ b/backend/src/db/seeders/20200430130760-user-roles.js @@ -118,6 +118,8 @@ module.exports = { 'projects', 'roles', 'permissions', + 'departments', + 'places', 'organizations', , ]; @@ -795,6 +797,56 @@ primary key ("roles_permissionsId", "permissionId") permissionId: getId('DELETE_PROJECTS'), }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('CREATE_DEPARTMENTS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('READ_DEPARTMENTS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('UPDATE_DEPARTMENTS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('DELETE_DEPARTMENTS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('CREATE_PLACES'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('READ_PLACES'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('UPDATE_PLACES'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('DELETE_PLACES'), + }, + { createdAt, updatedAt, @@ -970,6 +1022,56 @@ primary key ("roles_permissionsId", "permissionId") permissionId: getId('DELETE_PERMISSIONS'), }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('CREATE_DEPARTMENTS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('READ_DEPARTMENTS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('UPDATE_DEPARTMENTS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('DELETE_DEPARTMENTS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('CREATE_PLACES'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('READ_PLACES'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('UPDATE_PLACES'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('DELETE_PLACES'), + }, + { createdAt, updatedAt, diff --git a/backend/src/db/seeders/20231127130745-sample-data.js b/backend/src/db/seeders/20231127130745-sample-data.js index 62c4e29..de80dc3 100644 --- a/backend/src/db/seeders/20231127130745-sample-data.js +++ b/backend/src/db/seeders/20231127130745-sample-data.js @@ -9,127 +9,77 @@ const Payments = db.payments; const Projects = db.projects; +const Departments = db.departments; + +const Places = db.places; + const Organizations = db.organizations; const DocumentsData = [ { + // type code here for "relation_one" field + + nameofemployee_organization: 'Sheldon Glashow', + document_number: 'DOC001', - // type code here for "relation_one" field + description: 'Richard Feynman', - document_type: 'RV', + date: new Date(Date.now()), - prepared_by: 'jdoe', + payment_type: 'JV', - status: 'Filed', + Amount: 13.65, - cash_balance: true, + project_code: 'Noam Chomsky', - payment_date: new Date('2023-10-01T10:00:00Z'), - - amount: 1000, + document_status: 'Approved', shelf_number: 'S001', - - approved_by: 'asmith', - - // type code here for "relation_one" field }, { + // type code here for "relation_one" field + + nameofemployee_organization: 'Jean Piaget', + document_number: 'DOC002', - // type code here for "relation_one" field + description: 'Trofim Lysenko', - document_type: 'JV', + date: new Date(Date.now()), - prepared_by: 'asmith', + payment_type: 'BPV', - status: 'InProgress', + Amount: 84.59, - cash_balance: false, + project_code: 'Carl Linnaeus', - payment_date: new Date('2023-10-02T11:00:00Z'), - - amount: 2000, + document_status: 'Complete', shelf_number: 'S002', - - approved_by: 'bwhite', - - // type code here for "relation_one" field }, { + // type code here for "relation_one" field + + nameofemployee_organization: 'Charles Sherrington', + document_number: 'DOC003', - // type code here for "relation_one" field + description: 'Francis Galton', - document_type: 'RV', + date: new Date(Date.now()), - prepared_by: 'bwhite', + payment_type: 'CPV', - status: 'InProgress', + Amount: 16.57, - cash_balance: true, + project_code: 'Konrad Lorenz', - payment_date: new Date('2023-10-03T12:00:00Z'), - - amount: 1500, + document_status: 'Filled', shelf_number: 'S003', - - approved_by: 'cgreen', - - // type code here for "relation_one" field - }, - - { - document_number: 'DOC004', - - // type code here for "relation_one" field - - document_type: 'BPV', - - prepared_by: 'cgreen', - - status: 'InProgress', - - cash_balance: true, - - payment_date: new Date('2023-10-04T13:00:00Z'), - - amount: 2500, - - shelf_number: 'S004', - - approved_by: 'dblack', - - // type code here for "relation_one" field - }, - - { - document_number: 'DOC005', - - // type code here for "relation_one" field - - document_type: 'BPV', - - prepared_by: 'dblack', - - status: 'InProgress', - - cash_balance: true, - - payment_date: new Date('2023-10-05T14:00:00Z'), - - amount: 3000, - - shelf_number: 'S005', - - approved_by: 'jdoe', - - // type code here for "relation_one" field }, ]; @@ -147,15 +97,13 @@ const FieldSitePaymentRequisitionsData = [ departure_date: new Date('2023-10-01T08:00:00Z'), - arrival_place: 'London', - return_date: new Date('2023-10-10T18:00:00Z'), requisition_date: new Date('2023-09-25T09:00:00Z'), requested_amount: 5000, - payment_type: 'JV', + payment_type: 'RV', status: 'Paid', @@ -181,15 +129,13 @@ const FieldSitePaymentRequisitionsData = [ departure_date: new Date('2023-10-02T09:00:00Z'), - arrival_place: 'Paris', - return_date: new Date('2023-10-12T19:00:00Z'), requisition_date: new Date('2023-09-26T10:00:00Z'), requested_amount: 6000, - payment_type: 'JV', + payment_type: 'RV', status: 'Pending', @@ -215,8 +161,6 @@ const FieldSitePaymentRequisitionsData = [ departure_date: new Date('2023-10-03T10:00:00Z'), - arrival_place: 'Berlin', - return_date: new Date('2023-10-13T20:00:00Z'), requisition_date: new Date('2023-09-27T11:00:00Z'), @@ -225,7 +169,7 @@ const FieldSitePaymentRequisitionsData = [ payment_type: 'BPV', - status: 'Paid', + status: 'Approved', requester: 'bwhite', @@ -235,74 +179,6 @@ const FieldSitePaymentRequisitionsData = [ // type code here for "relation_one" field }, - - { - // type code here for "relation_one" field - - department: 'Operations', - - employee_name: 'Charlie Green', - - // type code here for "relation_one" field - - departure_place: 'Houston', - - departure_date: new Date('2023-10-04T11:00:00Z'), - - arrival_place: 'Tokyo', - - return_date: new Date('2023-10-14T21:00:00Z'), - - requisition_date: new Date('2023-09-28T12:00:00Z'), - - requested_amount: 8000, - - payment_type: 'JV', - - status: 'Paid', - - requester: 'cgreen', - - approver: 'dblack', - - due_date: new Date('2023-10-18T20:00:00Z'), - - // type code here for "relation_one" field - }, - - { - // type code here for "relation_one" field - - department: 'Investments', - - employee_name: 'David Black', - - // type code here for "relation_one" field - - departure_place: 'Miami', - - departure_date: new Date('2023-10-05T12:00:00Z'), - - arrival_place: 'Sydney', - - return_date: new Date('2023-10-15T22:00:00Z'), - - requisition_date: new Date('2023-09-29T13:00:00Z'), - - requested_amount: 9000, - - payment_type: 'JV', - - status: 'Approved', - - requester: 'dblack', - - approver: 'jdoe', - - due_date: new Date('2023-10-19T21:00:00Z'), - - // type code here for "relation_one" field - }, ]; const PaymentsData = [ @@ -325,7 +201,7 @@ const PaymentsData = [ amount: 1000, - payment_type: 'Addition', + payment_type: 'Subtraction', // type code here for "relation_one" field }, @@ -341,30 +217,6 @@ const PaymentsData = [ // type code here for "relation_one" field }, - - { - // type code here for "relation_one" field - - date: new Date('2023-10-04T13:00:00Z'), - - amount: 1250, - - payment_type: 'Addition', - - // type code here for "relation_one" field - }, - - { - // type code here for "relation_one" field - - date: new Date('2023-10-05T14:00:00Z'), - - amount: 1500, - - payment_type: 'Subtraction', - - // type code here for "relation_one" field - }, ]; const ProjectsData = [ @@ -373,7 +225,7 @@ const ProjectsData = [ code: 'PA001', - type: 'MOH', + type: 'Other', // type code here for "relation_one" field @@ -385,7 +237,7 @@ const ProjectsData = [ code: 'PB002', - type: 'CDC', + type: 'Other', // type code here for "relation_one" field @@ -403,28 +255,32 @@ const ProjectsData = [ // type code here for "relation_one" field }, +]; +const DepartmentsData = [ { - name: 'Project Delta', - - code: 'PD004', - - type: 'Other', - - // type code here for "relation_one" field - // type code here for "relation_one" field }, { - name: 'Project Epsilon', - - code: 'PE005', - - type: 'MOH', - // type code here for "relation_one" field + }, + { + // type code here for "relation_one" field + }, +]; + +const PlacesData = [ + { + // type code here for "relation_one" field + }, + + { + // type code here for "relation_one" field + }, + + { // type code here for "relation_one" field }, ]; @@ -441,14 +297,6 @@ const OrganizationsData = [ { name: 'Financial Services Group', }, - - { - name: 'Corporate Finance Co.', - }, - - { - name: 'Investment Partners', - }, ]; // Similar logic for "relation_many" @@ -486,85 +334,6 @@ async function associateUserWithOrganization() { if (User2?.setOrganization) { await User2.setOrganization(relatedOrganization2); } - - const relatedOrganization3 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const User3 = await Users.findOne({ - order: [['id', 'ASC']], - offset: 3, - }); - if (User3?.setOrganization) { - await User3.setOrganization(relatedOrganization3); - } - - const relatedOrganization4 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const User4 = await Users.findOne({ - order: [['id', 'ASC']], - offset: 4, - }); - if (User4?.setOrganization) { - await User4.setOrganization(relatedOrganization4); - } -} - -async function associateDocumentWithProject() { - const relatedProject0 = await Projects.findOne({ - offset: Math.floor(Math.random() * (await Projects.count())), - }); - const Document0 = await Documents.findOne({ - order: [['id', 'ASC']], - offset: 0, - }); - if (Document0?.setProject) { - await Document0.setProject(relatedProject0); - } - - const relatedProject1 = await Projects.findOne({ - offset: Math.floor(Math.random() * (await Projects.count())), - }); - const Document1 = await Documents.findOne({ - order: [['id', 'ASC']], - offset: 1, - }); - if (Document1?.setProject) { - await Document1.setProject(relatedProject1); - } - - const relatedProject2 = await Projects.findOne({ - offset: Math.floor(Math.random() * (await Projects.count())), - }); - const Document2 = await Documents.findOne({ - order: [['id', 'ASC']], - offset: 2, - }); - if (Document2?.setProject) { - await Document2.setProject(relatedProject2); - } - - const relatedProject3 = await Projects.findOne({ - offset: Math.floor(Math.random() * (await Projects.count())), - }); - const Document3 = await Documents.findOne({ - order: [['id', 'ASC']], - offset: 3, - }); - if (Document3?.setProject) { - await Document3.setProject(relatedProject3); - } - - const relatedProject4 = await Projects.findOne({ - offset: Math.floor(Math.random() * (await Projects.count())), - }); - const Document4 = await Documents.findOne({ - order: [['id', 'ASC']], - offset: 4, - }); - if (Document4?.setProject) { - await Document4.setProject(relatedProject4); - } } async function associateDocumentWithOrganization() { @@ -600,28 +369,6 @@ async function associateDocumentWithOrganization() { if (Document2?.setOrganization) { await Document2.setOrganization(relatedOrganization2); } - - const relatedOrganization3 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const Document3 = await Documents.findOne({ - order: [['id', 'ASC']], - offset: 3, - }); - if (Document3?.setOrganization) { - await Document3.setOrganization(relatedOrganization3); - } - - const relatedOrganization4 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const Document4 = await Documents.findOne({ - order: [['id', 'ASC']], - offset: 4, - }); - if (Document4?.setOrganization) { - await Document4.setOrganization(relatedOrganization4); - } } async function associateFieldSitePaymentRequisitionWithOrganization() { @@ -660,30 +407,6 @@ async function associateFieldSitePaymentRequisitionWithOrganization() { if (FieldSitePaymentRequisition2?.setOrganization) { await FieldSitePaymentRequisition2.setOrganization(relatedOrganization2); } - - const relatedOrganization3 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const FieldSitePaymentRequisition3 = - await FieldSitePaymentRequisitions.findOne({ - order: [['id', 'ASC']], - offset: 3, - }); - if (FieldSitePaymentRequisition3?.setOrganization) { - await FieldSitePaymentRequisition3.setOrganization(relatedOrganization3); - } - - const relatedOrganization4 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const FieldSitePaymentRequisition4 = - await FieldSitePaymentRequisitions.findOne({ - order: [['id', 'ASC']], - offset: 4, - }); - if (FieldSitePaymentRequisition4?.setOrganization) { - await FieldSitePaymentRequisition4.setOrganization(relatedOrganization4); - } } async function associateFieldSitePaymentRequisitionWithProject() { @@ -722,30 +445,6 @@ async function associateFieldSitePaymentRequisitionWithProject() { if (FieldSitePaymentRequisition2?.setProject) { await FieldSitePaymentRequisition2.setProject(relatedProject2); } - - const relatedProject3 = await Projects.findOne({ - offset: Math.floor(Math.random() * (await Projects.count())), - }); - const FieldSitePaymentRequisition3 = - await FieldSitePaymentRequisitions.findOne({ - order: [['id', 'ASC']], - offset: 3, - }); - if (FieldSitePaymentRequisition3?.setProject) { - await FieldSitePaymentRequisition3.setProject(relatedProject3); - } - - const relatedProject4 = await Projects.findOne({ - offset: Math.floor(Math.random() * (await Projects.count())), - }); - const FieldSitePaymentRequisition4 = - await FieldSitePaymentRequisitions.findOne({ - order: [['id', 'ASC']], - offset: 4, - }); - if (FieldSitePaymentRequisition4?.setProject) { - await FieldSitePaymentRequisition4.setProject(relatedProject4); - } } async function associateFieldSitePaymentRequisitionWithOrganization() { @@ -784,30 +483,6 @@ async function associateFieldSitePaymentRequisitionWithOrganization() { if (FieldSitePaymentRequisition2?.setOrganization) { await FieldSitePaymentRequisition2.setOrganization(relatedOrganization2); } - - const relatedOrganization3 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const FieldSitePaymentRequisition3 = - await FieldSitePaymentRequisitions.findOne({ - order: [['id', 'ASC']], - offset: 3, - }); - if (FieldSitePaymentRequisition3?.setOrganization) { - await FieldSitePaymentRequisition3.setOrganization(relatedOrganization3); - } - - const relatedOrganization4 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const FieldSitePaymentRequisition4 = - await FieldSitePaymentRequisitions.findOne({ - order: [['id', 'ASC']], - offset: 4, - }); - if (FieldSitePaymentRequisition4?.setOrganization) { - await FieldSitePaymentRequisition4.setOrganization(relatedOrganization4); - } } async function associatePaymentWithDocument() { @@ -843,28 +518,6 @@ async function associatePaymentWithDocument() { if (Payment2?.setDocument) { await Payment2.setDocument(relatedDocument2); } - - const relatedDocument3 = await Documents.findOne({ - offset: Math.floor(Math.random() * (await Documents.count())), - }); - const Payment3 = await Payments.findOne({ - order: [['id', 'ASC']], - offset: 3, - }); - if (Payment3?.setDocument) { - await Payment3.setDocument(relatedDocument3); - } - - const relatedDocument4 = await Documents.findOne({ - offset: Math.floor(Math.random() * (await Documents.count())), - }); - const Payment4 = await Payments.findOne({ - order: [['id', 'ASC']], - offset: 4, - }); - if (Payment4?.setDocument) { - await Payment4.setDocument(relatedDocument4); - } } async function associatePaymentWithOrganization() { @@ -900,27 +553,40 @@ async function associatePaymentWithOrganization() { if (Payment2?.setOrganization) { await Payment2.setOrganization(relatedOrganization2); } +} - const relatedOrganization3 = await Organizations.findOne({ +async function associateProjectWithOrganization() { + const relatedOrganization0 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Payment3 = await Payments.findOne({ + const Project0 = await Projects.findOne({ order: [['id', 'ASC']], - offset: 3, + offset: 0, }); - if (Payment3?.setOrganization) { - await Payment3.setOrganization(relatedOrganization3); + if (Project0?.setOrganization) { + await Project0.setOrganization(relatedOrganization0); } - const relatedOrganization4 = await Organizations.findOne({ + const relatedOrganization1 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Payment4 = await Payments.findOne({ + const Project1 = await Projects.findOne({ order: [['id', 'ASC']], - offset: 4, + offset: 1, }); - if (Payment4?.setOrganization) { - await Payment4.setOrganization(relatedOrganization4); + if (Project1?.setOrganization) { + await Project1.setOrganization(relatedOrganization1); + } + + const relatedOrganization2 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Project2 = await Projects.findOne({ + order: [['id', 'ASC']], + offset: 2, + }); + if (Project2?.setOrganization) { + await Project2.setOrganization(relatedOrganization2); } } @@ -957,84 +623,75 @@ async function associateProjectWithOrganization() { if (Project2?.setOrganization) { await Project2.setOrganization(relatedOrganization2); } - - const relatedOrganization3 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const Project3 = await Projects.findOne({ - order: [['id', 'ASC']], - offset: 3, - }); - if (Project3?.setOrganization) { - await Project3.setOrganization(relatedOrganization3); - } - - const relatedOrganization4 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const Project4 = await Projects.findOne({ - order: [['id', 'ASC']], - offset: 4, - }); - if (Project4?.setOrganization) { - await Project4.setOrganization(relatedOrganization4); - } } -async function associateProjectWithOrganization() { +async function associateDepartmentWithOrganization() { const relatedOrganization0 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Project0 = await Projects.findOne({ + const Department0 = await Departments.findOne({ order: [['id', 'ASC']], offset: 0, }); - if (Project0?.setOrganization) { - await Project0.setOrganization(relatedOrganization0); + if (Department0?.setOrganization) { + await Department0.setOrganization(relatedOrganization0); } const relatedOrganization1 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Project1 = await Projects.findOne({ + const Department1 = await Departments.findOne({ order: [['id', 'ASC']], offset: 1, }); - if (Project1?.setOrganization) { - await Project1.setOrganization(relatedOrganization1); + if (Department1?.setOrganization) { + await Department1.setOrganization(relatedOrganization1); } const relatedOrganization2 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Project2 = await Projects.findOne({ + const Department2 = await Departments.findOne({ order: [['id', 'ASC']], offset: 2, }); - if (Project2?.setOrganization) { - await Project2.setOrganization(relatedOrganization2); + if (Department2?.setOrganization) { + await Department2.setOrganization(relatedOrganization2); } +} - const relatedOrganization3 = await Organizations.findOne({ +async function associatePlaceWithOrganization() { + const relatedOrganization0 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Project3 = await Projects.findOne({ + const Place0 = await Places.findOne({ order: [['id', 'ASC']], - offset: 3, + offset: 0, }); - if (Project3?.setOrganization) { - await Project3.setOrganization(relatedOrganization3); + if (Place0?.setOrganization) { + await Place0.setOrganization(relatedOrganization0); } - const relatedOrganization4 = await Organizations.findOne({ + const relatedOrganization1 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Project4 = await Projects.findOne({ + const Place1 = await Places.findOne({ order: [['id', 'ASC']], - offset: 4, + offset: 1, }); - if (Project4?.setOrganization) { - await Project4.setOrganization(relatedOrganization4); + if (Place1?.setOrganization) { + await Place1.setOrganization(relatedOrganization1); + } + + const relatedOrganization2 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Place2 = await Places.findOne({ + order: [['id', 'ASC']], + offset: 2, + }); + if (Place2?.setOrganization) { + await Place2.setOrganization(relatedOrganization2); } } @@ -1050,6 +707,10 @@ module.exports = { await Projects.bulkCreate(ProjectsData); + await Departments.bulkCreate(DepartmentsData); + + await Places.bulkCreate(PlacesData); + await Organizations.bulkCreate(OrganizationsData); await Promise.all([ @@ -1057,8 +718,6 @@ module.exports = { await associateUserWithOrganization(), - await associateDocumentWithProject(), - await associateDocumentWithOrganization(), await associateFieldSitePaymentRequisitionWithOrganization(), @@ -1074,6 +733,10 @@ module.exports = { await associateProjectWithOrganization(), await associateProjectWithOrganization(), + + await associateDepartmentWithOrganization(), + + await associatePlaceWithOrganization(), ]); }, @@ -1090,6 +753,10 @@ module.exports = { await queryInterface.bulkDelete('projects', null, {}); + await queryInterface.bulkDelete('departments', null, {}); + + await queryInterface.bulkDelete('places', null, {}); + await queryInterface.bulkDelete('organizations', null, {}); }, }; diff --git a/backend/src/db/seeders/20250709185404.js b/backend/src/db/seeders/20250709185404.js new file mode 100644 index 0000000..32df522 --- /dev/null +++ b/backend/src/db/seeders/20250709185404.js @@ -0,0 +1,87 @@ +const { v4: uuid } = require('uuid'); +const db = require('../models'); +const Sequelize = require('sequelize'); +const config = require('../../config'); + +module.exports = { + /** + * @param{import("sequelize").QueryInterface} queryInterface + * @return {Promise} + */ + async up(queryInterface) { + const createdAt = new Date(); + const updatedAt = new Date(); + + /** @type {Map} */ + const idMap = new Map(); + + /** + * @param {string} key + * @return {string} + */ + function getId(key) { + if (idMap.has(key)) { + return idMap.get(key); + } + const id = uuid(); + idMap.set(key, id); + return id; + } + + /** + * @param {string} name + */ + function createPermissions(name) { + return [ + { + id: getId(`CREATE_${name.toUpperCase()}`), + createdAt, + updatedAt, + name: `CREATE_${name.toUpperCase()}`, + }, + { + id: getId(`READ_${name.toUpperCase()}`), + createdAt, + updatedAt, + name: `READ_${name.toUpperCase()}`, + }, + { + id: getId(`UPDATE_${name.toUpperCase()}`), + createdAt, + updatedAt, + name: `UPDATE_${name.toUpperCase()}`, + }, + { + id: getId(`DELETE_${name.toUpperCase()}`), + createdAt, + updatedAt, + name: `DELETE_${name.toUpperCase()}`, + }, + ]; + } + + const entities = ['organizations']; + + const createdPermissions = entities.flatMap(createPermissions); + + // Add permissions to database + await queryInterface.bulkInsert('permissions', createdPermissions); + // Get permissions ids + const permissionsIds = createdPermissions.map((p) => p.id); + // Get admin role + const adminRole = await db.roles.findOne({ + where: { name: config.roles.super_admin }, + }); + + if (adminRole) { + // Add permissions to admin role if it exists + await adminRole.addPermissions(permissionsIds); + } + }, + down: async (queryInterface, Sequelize) => { + await queryInterface.bulkDelete( + 'permissions', + entities.flatMap(createPermissions), + ); + }, +}; diff --git a/backend/src/index.js b/backend/src/index.js index d785f0f..3cf0ee3 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -35,6 +35,10 @@ const rolesRoutes = require('./routes/roles'); const permissionsRoutes = require('./routes/permissions'); +const departmentsRoutes = require('./routes/departments'); + +const placesRoutes = require('./routes/places'); + const organizationsRoutes = require('./routes/organizations'); const getBaseUrl = (url) => { @@ -144,6 +148,18 @@ app.use( permissionsRoutes, ); +app.use( + '/api/departments', + passport.authenticate('jwt', { session: false }), + departmentsRoutes, +); + +app.use( + '/api/places', + passport.authenticate('jwt', { session: false }), + placesRoutes, +); + app.use( '/api/organizations', passport.authenticate('jwt', { session: false }), diff --git a/backend/src/routes/documents.js b/backend/src/routes/documents.js index f820344..fa840dd 100644 --- a/backend/src/routes/documents.js +++ b/backend/src/routes/documents.js @@ -22,20 +22,23 @@ router.use(checkCrudPermissions('documents')); * type: object * properties: + * nameofemployee_organization: + * type: string + * default: nameofemployee_organization * document_number: * type: string * default: document_number - * prepared_by: + * description: * type: string - * default: prepared_by + * default: description + * project_code: + * type: string + * default: project_code * shelf_number: * type: string * default: shelf_number - * approved_by: - * type: string - * default: approved_by - * amount: + * Amount: * type: integer * format: int64 @@ -327,13 +330,15 @@ router.get( if (filetype && filetype === 'csv') { const fields = [ 'id', + 'nameofemployee_organization', 'document_number', - 'prepared_by', + 'description', + 'project_code', 'shelf_number', - 'approved_by', - 'amount', - 'payment_date', + 'Amount', + + 'date', ]; const opts = { fields }; try { diff --git a/backend/src/services/search.js b/backend/src/services/search.js index d123771..9cf6c16 100644 --- a/backend/src/services/search.js +++ b/backend/src/services/search.js @@ -44,13 +44,15 @@ module.exports = class SearchService { users: ['firstName', 'lastName', 'phoneNumber', 'email'], documents: [ + 'nameofemployee_organization', + 'document_number', - 'prepared_by', + 'description', + + 'project_code', 'shelf_number', - - 'approved_by', ], field_site_payment_requisitions: [ @@ -60,8 +62,6 @@ module.exports = class SearchService { 'departure_place', - 'arrival_place', - 'requester', 'approver', @@ -72,7 +72,7 @@ module.exports = class SearchService { organizations: ['name'], }; const columnsInt = { - documents: ['amount'], + documents: ['Amount'], field_site_payment_requisitions: ['requested_amount'], diff --git a/frontend/json/runtimeError.json b/frontend/json/runtimeError.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/frontend/json/runtimeError.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/frontend/src/components/Documents/CardDocuments.tsx b/frontend/src/components/Documents/CardDocuments.tsx index 4fff793..cda2661 100644 --- a/frontend/src/components/Documents/CardDocuments.tsx +++ b/frontend/src/components/Documents/CardDocuments.tsx @@ -62,7 +62,7 @@ const CardDocuments = ({ href={`/documents/documents-view/?id=${item.id}`} className='text-lg font-bold leading-6 line-clamp-1' > - {item.document_number} + {item.id}
@@ -78,7 +78,31 @@ const CardDocuments = ({
- DocumentNumber + organizations +
+
+
+ {dataFormatter.organizationsOneListFormatter( + item.organizations, + )} +
+
+
+ +
+
+ Nameofemployee Organization +
+
+
+ {item.nameofemployee_organization} +
+
+
+ +
+
+ Document Number
@@ -89,66 +113,31 @@ const CardDocuments = ({
- Project + Description
- {dataFormatter.projectsOneListFormatter(item.project)} + {item.description} +
+
+
+ +
+
Date
+
+
+ {dataFormatter.dateFormatter(item.date)}
- DocumentType + Payment Type
- {item.document_type} -
-
-
- -
-
- PreparedBy -
-
-
- {item.prepared_by} -
-
-
- -
-
- Status -
-
-
- {item.status} -
-
-
- -
-
- CashBalance -
-
-
- {dataFormatter.booleanFormatter(item.cash_balance)} -
-
-
- -
-
- PaymentDate -
-
-
- {dataFormatter.dateTimeFormatter(item.payment_date)} + {item.payment_type}
@@ -159,14 +148,36 @@ const CardDocuments = ({
- {item.amount} + {item.Amount}
- ShelfNumber + Project Code +
+
+
+ {item.project_code} +
+
+
+ +
+
+ Document Status +
+
+
+ {item.document_status} +
+
+
+ +
+
+ Shelf Number
@@ -174,17 +185,6 @@ const CardDocuments = ({
- -
-
- ApprovedBy -
-
-
- {item.approved_by} -
-
-
))} diff --git a/frontend/src/components/Documents/ListDocuments.tsx b/frontend/src/components/Documents/ListDocuments.tsx index c8829ec..0a558c2 100644 --- a/frontend/src/components/Documents/ListDocuments.tsx +++ b/frontend/src/components/Documents/ListDocuments.tsx @@ -55,61 +55,69 @@ const ListDocuments = ({ >

- DocumentNumber + organizations +

+

+ {dataFormatter.organizationsOneListFormatter( + item.organizations, + )} +

+
+ +
+

+ Nameofemployee Organization +

+

+ {item.nameofemployee_organization} +

+
+ +
+

+ Document Number

{item.document_number}

-

Project

+

Description

+

{item.description}

+
+ +
+

Date

- {dataFormatter.projectsOneListFormatter(item.project)} + {dataFormatter.dateFormatter(item.date)}

-

DocumentType

-

{item.document_type}

-
- -
-

PreparedBy

-

{item.prepared_by}

-
- -
-

Status

-

{item.status}

-
- -
-

CashBalance

-

- {dataFormatter.booleanFormatter(item.cash_balance)} -

-
- -
-

PaymentDate

-

- {dataFormatter.dateTimeFormatter(item.payment_date)} -

+

Payment Type

+

{item.payment_type}

Amount

-

{item.amount}

+

{item.Amount}

-

ShelfNumber

+

Project Code

+

{item.project_code}

+
+ +
+

+ Document Status +

+

{item.document_status}

+
+ +
+

Shelf Number

{item.shelf_number}

- -
-

ApprovedBy

-

{item.approved_by}

-
value?.id, getOptionLabel: (value: any) => value?.label, - valueOptions: await callOptionsApi('projects'), + valueOptions: await callOptionsApi('organizations'), valueGetter: (params: GridValueGetterParams) => params?.value?.id ?? params?.value, }, { - field: 'document_type', - headerName: 'DocumentType', + field: 'nameofemployee_organization', + headerName: 'Nameofemployee Organization', flex: 1, minWidth: 120, filterable: false, @@ -83,8 +71,8 @@ export const loadColumns = async ( }, { - field: 'prepared_by', - headerName: 'PreparedBy', + field: 'document_number', + headerName: 'Document Number', flex: 1, minWidth: 120, filterable: false, @@ -95,8 +83,8 @@ export const loadColumns = async ( }, { - field: 'status', - headerName: 'Status', + field: 'description', + headerName: 'Description', flex: 1, minWidth: 120, filterable: false, @@ -107,8 +95,8 @@ export const loadColumns = async ( }, { - field: 'cash_balance', - headerName: 'CashBalance', + field: 'date', + headerName: 'Date', flex: 1, minWidth: 120, filterable: false, @@ -117,12 +105,13 @@ export const loadColumns = async ( editable: hasUpdatePermission, - type: 'boolean', + type: 'date', + valueGetter: (params: GridValueGetterParams) => new Date(params.row.date), }, { - field: 'payment_date', - headerName: 'PaymentDate', + field: 'payment_type', + headerName: 'Payment Type', flex: 1, minWidth: 120, filterable: false, @@ -130,14 +119,10 @@ export const loadColumns = async ( cellClassName: 'datagrid--cell', editable: hasUpdatePermission, - - type: 'dateTime', - valueGetter: (params: GridValueGetterParams) => - new Date(params.row.payment_date), }, { - field: 'amount', + field: 'Amount', headerName: 'Amount', flex: 1, minWidth: 120, @@ -151,8 +136,8 @@ export const loadColumns = async ( }, { - field: 'shelf_number', - headerName: 'ShelfNumber', + field: 'project_code', + headerName: 'Project Code', flex: 1, minWidth: 120, filterable: false, @@ -163,8 +148,20 @@ export const loadColumns = async ( }, { - field: 'approved_by', - headerName: 'ApprovedBy', + field: 'document_status', + headerName: 'Document Status', + flex: 1, + minWidth: 120, + filterable: false, + headerClassName: 'datagrid--header', + cellClassName: 'datagrid--cell', + + editable: hasUpdatePermission, + }, + + { + field: 'shelf_number', + headerName: 'Shelf Number', flex: 1, minWidth: 120, filterable: false, diff --git a/frontend/src/components/Organizations/CardOrganizations.tsx b/frontend/src/components/Organizations/CardOrganizations.tsx index ee605ae..cc0a7cc 100644 --- a/frontend/src/components/Organizations/CardOrganizations.tsx +++ b/frontend/src/components/Organizations/CardOrganizations.tsx @@ -65,7 +65,7 @@ const CardOrganizations = ({ href={`/organizations/organizations-view/?id=${item.id}`} className='text-lg font-bold leading-6 line-clamp-1' > - {item.name} + {item.id}
diff --git a/frontend/src/components/WebPageComponents/Footer.tsx b/frontend/src/components/WebPageComponents/Footer.tsx index 3bb82c5..827aaf1 100644 --- a/frontend/src/components/WebPageComponents/Footer.tsx +++ b/frontend/src/components/WebPageComponents/Footer.tsx @@ -17,7 +17,7 @@ export default function WebSiteFooter({ projectName }: WebSiteFooterProps) { const borders = useAppSelector((state) => state.style.borders); const websiteHeder = useAppSelector((state) => state.style.websiteHeder); - const style = FooterStyle.WITH_PROJECT_NAME; + const style = FooterStyle.WITH_PAGES; const design = FooterDesigns.DEFAULT_DESIGN; diff --git a/frontend/src/components/WebPageComponents/Header.tsx b/frontend/src/components/WebPageComponents/Header.tsx index 80a69ef..740fe74 100644 --- a/frontend/src/components/WebPageComponents/Header.tsx +++ b/frontend/src/components/WebPageComponents/Header.tsx @@ -17,9 +17,9 @@ export default function WebSiteHeader({ projectName }: WebSiteHeaderProps) { const websiteHeder = useAppSelector((state) => state.style.websiteHeder); const borders = useAppSelector((state) => state.style.borders); - const style = HeaderStyle.PAGES_LEFT; + const style = HeaderStyle.PAGES_RIGHT; - const design = HeaderDesigns.DEFAULT_DESIGN; + const design = HeaderDesigns.DESIGN_DIVERSITY; return (
item.document_number); + return val.map((item) => item.id); }, documentsOneListFormatter(val) { if (!val) return ''; - return val.document_number; + return val.id; }, documentsManyListFormatterEdit(val) { if (!val || !val.length) return []; return val.map((item) => { - return { id: item.id, label: item.document_number }; + return { id: item.id, label: item.id }; }); }, documentsOneListFormatterEdit(val) { if (!val) return ''; - return { label: val.document_number, id: val.id }; + return { label: val.id, id: val.id }; }, projectsManyListFormatter(val) { @@ -117,20 +117,20 @@ export default { organizationsManyListFormatter(val) { if (!val || !val.length) return []; - return val.map((item) => item.name); + return val.map((item) => item.id); }, organizationsOneListFormatter(val) { if (!val) return ''; - return val.name; + return val.id; }, organizationsManyListFormatterEdit(val) { if (!val || !val.length) return []; return val.map((item) => { - return { id: item.id, label: item.name }; + return { id: item.id, label: item.id }; }); }, organizationsOneListFormatterEdit(val) { if (!val) return ''; - return { label: val.name, id: val.id }; + return { label: val.id, id: val.id }; }, }; diff --git a/frontend/src/menuAside.ts b/frontend/src/menuAside.ts index 398495c..35c39bb 100644 --- a/frontend/src/menuAside.ts +++ b/frontend/src/menuAside.ts @@ -76,6 +76,22 @@ const menuAside: MenuAsideItem[] = [ icon: icon.mdiShieldAccountOutline ?? icon.mdiTable, permissions: 'READ_PERMISSIONS', }, + { + href: '/departments/departments-list', + label: 'Departments', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + icon: icon.mdiTable ?? icon.mdiTable, + permissions: 'READ_DEPARTMENTS', + }, + { + href: '/places/places-list', + label: 'Places', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + icon: icon.mdiTable ?? icon.mdiTable, + permissions: 'READ_PLACES', + }, { href: '/organizations/organizations-list', label: 'Organizations', diff --git a/frontend/src/pages/dashboard.tsx b/frontend/src/pages/dashboard.tsx index 60a6447..ba80d39 100644 --- a/frontend/src/pages/dashboard.tsx +++ b/frontend/src/pages/dashboard.tsx @@ -36,6 +36,8 @@ const Dashboard = () => { const [projects, setProjects] = React.useState(loadingMessage); const [roles, setRoles] = React.useState(loadingMessage); const [permissions, setPermissions] = React.useState(loadingMessage); + const [departments, setDepartments] = React.useState(loadingMessage); + const [places, setPlaces] = React.useState(loadingMessage); const [organizations, setOrganizations] = React.useState(loadingMessage); const [widgetsRole, setWidgetsRole] = React.useState({ @@ -57,6 +59,8 @@ const Dashboard = () => { 'projects', 'roles', 'permissions', + 'departments', + 'places', 'organizations', ]; const fns = [ @@ -67,6 +71,8 @@ const Dashboard = () => { setProjects, setRoles, setPermissions, + setDepartments, + setPlaces, setOrganizations, ]; @@ -431,6 +437,70 @@ const Dashboard = () => { )} + {hasPermission(currentUser, 'READ_DEPARTMENTS') && ( + +
+
+
+
+ Departments +
+
+ {departments} +
+
+
+ +
+
+
+ + )} + + {hasPermission(currentUser, 'READ_PLACES') && ( + +
+
+
+
+ Places +
+
+ {places} +
+
+
+ +
+
+
+ + )} + {hasPermission(currentUser, 'READ_ORGANIZATIONS') && (
{ + const router = useRouter(); + const dispatch = useAppDispatch(); + const initVals = { + organizations: null, + }; + const [initialValues, setInitialValues] = useState(initVals); + + const { departments } = useAppSelector((state) => state.departments); + + const { currentUser } = useAppSelector((state) => state.auth); + + const { departmentsId } = router.query; + + useEffect(() => { + dispatch(fetch({ id: departmentsId })); + }, [departmentsId]); + + useEffect(() => { + if (typeof departments === 'object') { + setInitialValues(departments); + } + }, [departments]); + + useEffect(() => { + if (typeof departments === 'object') { + const newInitialVal = { ...initVals }; + + Object.keys(initVals).forEach( + (el) => (newInitialVal[el] = departments[el]), + ); + + setInitialValues(newInitialVal); + } + }, [departments]); + + const handleSubmit = async (data) => { + await dispatch(update({ id: departmentsId, data })); + await router.push('/departments/departments-list'); + }; + + return ( + <> + + {getPageTitle('Edit departments')} + + + + {''} + + + handleSubmit(values)} + > +
+ + + + + + + + + router.push('/departments/departments-list')} + /> + + +
+
+
+ + ); +}; + +EditDepartments.getLayout = function getLayout(page: ReactElement) { + return ( + + {page} + + ); +}; + +export default EditDepartments; diff --git a/frontend/src/pages/departments/departments-edit.tsx b/frontend/src/pages/departments/departments-edit.tsx new file mode 100644 index 0000000..599631e --- /dev/null +++ b/frontend/src/pages/departments/departments-edit.tsx @@ -0,0 +1,135 @@ +import { mdiChartTimelineVariant, mdiUpload } from '@mdi/js'; +import Head from 'next/head'; +import React, { ReactElement, useEffect, useState } from 'react'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; +import dayjs from 'dayjs'; + +import CardBox from '../../components/CardBox'; +import LayoutAuthenticated from '../../layouts/Authenticated'; +import SectionMain from '../../components/SectionMain'; +import SectionTitleLineWithButton from '../../components/SectionTitleLineWithButton'; +import { getPageTitle } from '../../config'; + +import { Field, Form, Formik } from 'formik'; +import FormField from '../../components/FormField'; +import BaseDivider from '../../components/BaseDivider'; +import BaseButtons from '../../components/BaseButtons'; +import BaseButton from '../../components/BaseButton'; +import FormCheckRadio from '../../components/FormCheckRadio'; +import FormCheckRadioGroup from '../../components/FormCheckRadioGroup'; +import FormFilePicker from '../../components/FormFilePicker'; +import FormImagePicker from '../../components/FormImagePicker'; +import { SelectField } from '../../components/SelectField'; +import { SelectFieldMany } from '../../components/SelectFieldMany'; +import { SwitchField } from '../../components/SwitchField'; +import { RichTextField } from '../../components/RichTextField'; + +import { update, fetch } from '../../stores/departments/departmentsSlice'; +import { useAppDispatch, useAppSelector } from '../../stores/hooks'; +import { useRouter } from 'next/router'; +import { saveFile } from '../../helpers/fileSaver'; +import dataFormatter from '../../helpers/dataFormatter'; +import ImageField from '../../components/ImageField'; + +import { hasPermission } from '../../helpers/userPermissions'; + +const EditDepartmentsPage = () => { + const router = useRouter(); + const dispatch = useAppDispatch(); + const initVals = { + organizations: null, + }; + const [initialValues, setInitialValues] = useState(initVals); + + const { departments } = useAppSelector((state) => state.departments); + + const { currentUser } = useAppSelector((state) => state.auth); + + const { id } = router.query; + + useEffect(() => { + dispatch(fetch({ id: id })); + }, [id]); + + useEffect(() => { + if (typeof departments === 'object') { + setInitialValues(departments); + } + }, [departments]); + + useEffect(() => { + if (typeof departments === 'object') { + const newInitialVal = { ...initVals }; + Object.keys(initVals).forEach( + (el) => (newInitialVal[el] = departments[el]), + ); + setInitialValues(newInitialVal); + } + }, [departments]); + + const handleSubmit = async (data) => { + await dispatch(update({ id: id, data })); + await router.push('/departments/departments-list'); + }; + + return ( + <> + + {getPageTitle('Edit departments')} + + + + {''} + + + handleSubmit(values)} + > +
+ + + + + + + + + router.push('/departments/departments-list')} + /> + + +
+
+
+ + ); +}; + +EditDepartmentsPage.getLayout = function getLayout(page: ReactElement) { + return ( + + {page} + + ); +}; + +export default EditDepartmentsPage; diff --git a/frontend/src/pages/departments/departments-view.tsx b/frontend/src/pages/departments/departments-view.tsx new file mode 100644 index 0000000..69d2b6c --- /dev/null +++ b/frontend/src/pages/departments/departments-view.tsx @@ -0,0 +1,88 @@ +import React, { ReactElement, useEffect } from 'react'; +import Head from 'next/head'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; +import dayjs from 'dayjs'; +import { useAppDispatch, useAppSelector } from '../../stores/hooks'; +import { useRouter } from 'next/router'; +import { fetch } from '../../stores/departments/departmentsSlice'; +import { saveFile } from '../../helpers/fileSaver'; +import dataFormatter from '../../helpers/dataFormatter'; +import ImageField from '../../components/ImageField'; +import LayoutAuthenticated from '../../layouts/Authenticated'; +import { getPageTitle } from '../../config'; +import SectionTitleLineWithButton from '../../components/SectionTitleLineWithButton'; +import SectionMain from '../../components/SectionMain'; +import CardBox from '../../components/CardBox'; +import BaseButton from '../../components/BaseButton'; +import BaseDivider from '../../components/BaseDivider'; +import { mdiChartTimelineVariant } from '@mdi/js'; +import { SwitchField } from '../../components/SwitchField'; +import FormField from '../../components/FormField'; + +import { hasPermission } from '../../helpers/userPermissions'; + +const DepartmentsView = () => { + const router = useRouter(); + const dispatch = useAppDispatch(); + const { departments } = useAppSelector((state) => state.departments); + + const { currentUser } = useAppSelector((state) => state.auth); + + const { id } = router.query; + + function removeLastCharacter(str) { + console.log(str, `str`); + return str.slice(0, -1); + } + + useEffect(() => { + dispatch(fetch({ id })); + }, [dispatch, id]); + + return ( + <> + + {getPageTitle('View departments')} + + + + + + +
+

organizations

+ +

{departments?.organizations?.id ?? 'No data'}

+
+ + + + router.push('/departments/departments-list')} + /> +
+
+ + ); +}; + +DepartmentsView.getLayout = function getLayout(page: ReactElement) { + return ( + + {page} + + ); +}; + +export default DepartmentsView; diff --git a/frontend/src/pages/documents/[documentsId].tsx b/frontend/src/pages/documents/[documentsId].tsx index cc1913c..a74d11b 100644 --- a/frontend/src/pages/documents/[documentsId].tsx +++ b/frontend/src/pages/documents/[documentsId].tsx @@ -38,27 +38,25 @@ const EditDocuments = () => { const router = useRouter(); const dispatch = useAppDispatch(); const initVals = { + organizations: null, + + nameofemployee_organization: '', + document_number: '', - project: null, + description: '', - document_type: '', + date: new Date(), - prepared_by: '', + payment_type: '', - status: '', + Amount: '', - cash_balance: false, + project_code: '', - payment_date: new Date(), - - amount: '', + document_status: '', shelf_number: '', - - approved_by: '', - - organizations: null, }; const [initialValues, setInitialValues] = useState(initVals); @@ -115,86 +113,6 @@ const EditDocuments = () => { onSubmit={(values) => handleSubmit(values)} >
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - setInitialValues({ ...initialValues, payment_date: date }) - } - /> - - - - - - - - - - - - - - { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > + + + + + + + + + + + + + + + setInitialValues({ ...initialValues, date: date }) + } + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/pages/documents/documents-edit.tsx b/frontend/src/pages/documents/documents-edit.tsx index 4ea0680..aa427f9 100644 --- a/frontend/src/pages/documents/documents-edit.tsx +++ b/frontend/src/pages/documents/documents-edit.tsx @@ -38,27 +38,25 @@ const EditDocumentsPage = () => { const router = useRouter(); const dispatch = useAppDispatch(); const initVals = { + organizations: null, + + nameofemployee_organization: '', + document_number: '', - project: null, + description: '', - document_type: '', + date: new Date(), - prepared_by: '', + payment_type: '', - status: '', + Amount: '', - cash_balance: false, + project_code: '', - payment_date: new Date(), - - amount: '', + document_status: '', shelf_number: '', - - approved_by: '', - - organizations: null, }; const [initialValues, setInitialValues] = useState(initVals); @@ -113,86 +111,6 @@ const EditDocumentsPage = () => { onSubmit={(values) => handleSubmit(values)} > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - setInitialValues({ ...initialValues, payment_date: date }) - } - /> - - - - - - - - - - - - - - { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > + + + + + + + + + + + + + + + setInitialValues({ ...initialValues, date: date }) + } + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/pages/documents/documents-list.tsx b/frontend/src/pages/documents/documents-list.tsx index 0130620..af39413 100644 --- a/frontend/src/pages/documents/documents-list.tsx +++ b/frontend/src/pages/documents/documents-list.tsx @@ -29,27 +29,28 @@ const DocumentsTablesPage = () => { const dispatch = useAppDispatch(); const [filters] = useState([ - { label: 'DocumentNumber', title: 'document_number' }, - { label: 'PreparedBy', title: 'prepared_by' }, - { label: 'ShelfNumber', title: 'shelf_number' }, - { label: 'ApprovedBy', title: 'approved_by' }, + { + label: 'Nameofemployee Organization', + title: 'nameofemployee_organization', + }, + { label: 'Document Number', title: 'document_number' }, + { label: 'Description', title: 'description' }, + { label: 'Project Code', title: 'project_code' }, + { label: 'Shelf Number', title: 'shelf_number' }, - { label: 'Amount', title: 'amount', number: 'true' }, - { label: 'PaymentDate', title: 'payment_date', date: 'true' }, - - { label: 'Project', title: 'project' }, + { label: 'Amount', title: 'Amount', number: 'true' }, { - label: 'DocumentType', - title: 'document_type', + label: 'Payment Type', + title: 'payment_type', type: 'enum', - options: ['BPV', 'JV', 'RV'], + options: ['BPV', 'JV', 'RV', 'CPV'], }, { - label: 'Status', - title: 'status', + label: 'Document Status', + title: 'document_status', type: 'enum', - options: ['Filed', 'InProgress'], + options: ['Approved', 'Complete', 'On progress', 'Filled'], }, ]); diff --git a/frontend/src/pages/documents/documents-new.tsx b/frontend/src/pages/documents/documents-new.tsx index 6f1c686..bca10cd 100644 --- a/frontend/src/pages/documents/documents-new.tsx +++ b/frontend/src/pages/documents/documents-new.tsx @@ -33,27 +33,26 @@ import { useRouter } from 'next/router'; import moment from 'moment'; const initialValues = { + organizations: '', + + nameofemployee_organization: '', + document_number: '', - project: '', + description: '', - document_type: 'BPV', + date: '', + dateDate: '', - prepared_by: '', + payment_type: 'BPV', - status: 'Filed', + Amount: '', - cash_balance: false, + project_code: '', - payment_date: '', - - amount: '', + document_status: 'Approved', shelf_number: '', - - approved_by: '', - - organizations: '', }; const DocumentsNew = () => { @@ -83,74 +82,6 @@ const DocumentsNew = () => { onSubmit={(values) => handleSubmit(values)} > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/pages/documents/documents-table.tsx b/frontend/src/pages/documents/documents-table.tsx index 4da70d3..2754b52 100644 --- a/frontend/src/pages/documents/documents-table.tsx +++ b/frontend/src/pages/documents/documents-table.tsx @@ -29,27 +29,28 @@ const DocumentsTablesPage = () => { const dispatch = useAppDispatch(); const [filters] = useState([ - { label: 'DocumentNumber', title: 'document_number' }, - { label: 'PreparedBy', title: 'prepared_by' }, - { label: 'ShelfNumber', title: 'shelf_number' }, - { label: 'ApprovedBy', title: 'approved_by' }, + { + label: 'Nameofemployee Organization', + title: 'nameofemployee_organization', + }, + { label: 'Document Number', title: 'document_number' }, + { label: 'Description', title: 'description' }, + { label: 'Project Code', title: 'project_code' }, + { label: 'Shelf Number', title: 'shelf_number' }, - { label: 'Amount', title: 'amount', number: 'true' }, - { label: 'PaymentDate', title: 'payment_date', date: 'true' }, - - { label: 'Project', title: 'project' }, + { label: 'Amount', title: 'Amount', number: 'true' }, { - label: 'DocumentType', - title: 'document_type', + label: 'Payment Type', + title: 'payment_type', type: 'enum', - options: ['BPV', 'JV', 'RV'], + options: ['BPV', 'JV', 'RV', 'CPV'], }, { - label: 'Status', - title: 'status', + label: 'Document Status', + title: 'document_status', type: 'enum', - options: ['Filed', 'InProgress'], + options: ['Approved', 'Complete', 'On progress', 'Filled'], }, ]); diff --git a/frontend/src/pages/documents/documents-view.tsx b/frontend/src/pages/documents/documents-view.tsx index 093eb3b..b272b04 100644 --- a/frontend/src/pages/documents/documents-view.tsx +++ b/frontend/src/pages/documents/documents-view.tsx @@ -59,81 +59,70 @@ const DocumentsView = () => {
-

DocumentNumber

+

organizations

+ +

{documents?.organizations?.id ?? 'No data'}

+
+ +
+

+ Nameofemployee Organization +

+

{documents?.nameofemployee_organization}

+
+ +
+

Document Number

{documents?.document_number}

-

Project

- -

{documents?.project?.name ?? 'No data'}

+

Description

+

{documents?.description}

-
-

DocumentType

-

{documents?.document_type ?? 'No data'}

-
- -
-

PreparedBy

-

{documents?.prepared_by}

-
- -
-

Status

-

{documents?.status ?? 'No data'}

-
- - - null }} - disabled - /> - - - - {documents.payment_date ? ( + + {documents.date ? ( ) : ( -

No PaymentDate

+

No Date

)}
+
+

Payment Type

+

{documents?.payment_type ?? 'No data'}

+
+

Amount

-

{documents?.amount || 'No data'}

+

{documents?.Amount || 'No data'}

-

ShelfNumber

+

Project Code

+

{documents?.project_code}

+
+ +
+

Document Status

+

{documents?.document_status ?? 'No data'}

+
+ +
+

Shelf Number

{documents?.shelf_number}

-
-

ApprovedBy

-

{documents?.approved_by}

-
- -
-

organizations

- -

{documents?.organizations?.name ?? 'No data'}

-
- <>

Payments Document

{ departure_date: new Date(), - arrival_place: '', - return_date: new Date(), requisition_date: new Date(), @@ -140,7 +138,7 @@ const EditField_site_payment_requisitions = () => { component={SelectField} options={initialValues.organization} itemRef={'organizations'} - showField={'name'} + showField={'id'} >
)} @@ -187,10 +185,6 @@ const EditField_site_payment_requisitions = () => { /> - - - - { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > diff --git a/frontend/src/pages/field_site_payment_requisitions/field_site_payment_requisitions-edit.tsx b/frontend/src/pages/field_site_payment_requisitions/field_site_payment_requisitions-edit.tsx index 2b26ba5..e9adfc0 100644 --- a/frontend/src/pages/field_site_payment_requisitions/field_site_payment_requisitions-edit.tsx +++ b/frontend/src/pages/field_site_payment_requisitions/field_site_payment_requisitions-edit.tsx @@ -53,8 +53,6 @@ const EditField_site_payment_requisitionsPage = () => { departure_date: new Date(), - arrival_place: '', - return_date: new Date(), requisition_date: new Date(), @@ -138,7 +136,7 @@ const EditField_site_payment_requisitionsPage = () => { component={SelectField} options={initialValues.organization} itemRef={'organizations'} - showField={'name'} + showField={'id'} > )} @@ -185,10 +183,6 @@ const EditField_site_payment_requisitionsPage = () => { /> - - - - { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > diff --git a/frontend/src/pages/field_site_payment_requisitions/field_site_payment_requisitions-view.tsx b/frontend/src/pages/field_site_payment_requisitions/field_site_payment_requisitions-view.tsx index 083769e..fec84ca 100644 --- a/frontend/src/pages/field_site_payment_requisitions/field_site_payment_requisitions-view.tsx +++ b/frontend/src/pages/field_site_payment_requisitions/field_site_payment_requisitions-view.tsx @@ -65,8 +65,7 @@ const Field_site_payment_requisitionsView = () => {

Organization

- {field_site_payment_requisitions?.organization?.name ?? - 'No data'} + {field_site_payment_requisitions?.organization?.id ?? 'No data'}

)} @@ -113,11 +112,6 @@ const Field_site_payment_requisitionsView = () => { )} -
-

ArrivalPlace

-

{field_site_payment_requisitions?.arrival_place}

-
- {field_site_payment_requisitions.return_date ? ( {

organizations

- {field_site_payment_requisitions?.organizations?.name ?? - 'No data'} + {field_site_payment_requisitions?.organizations?.id ?? 'No data'}

diff --git a/frontend/src/pages/organizations/organizations-view.tsx b/frontend/src/pages/organizations/organizations-view.tsx index f48fe7f..0fadda6 100644 --- a/frontend/src/pages/organizations/organizations-view.tsx +++ b/frontend/src/pages/organizations/organizations-view.tsx @@ -126,23 +126,23 @@ const OrganizationsView = () => { - + - + - + - + - - - + - + - + + + @@ -157,31 +157,31 @@ const OrganizationsView = () => { ) } > + + - + + - + - + - + + - - - - - - ))} @@ -213,8 +213,6 @@ const OrganizationsView = () => { - - @@ -263,10 +261,6 @@ const OrganizationsView = () => { )} - - - - @@ -377,10 +369,6 @@ const OrganizationsView = () => { )} - - - - @@ -234,10 +155,6 @@ const ProjectsView = () => { )} - -
DocumentNumberNameofemployee OrganizationDocumentTypeDocument NumberPreparedByDescriptionStatusDateCashBalancePaymentDatePayment Type AmountShelfNumberProject CodeApprovedByDocument StatusShelf Number
+ {item.nameofemployee_organization} + {item.document_number} - {item.document_type} + {item.description} + {dataFormatter.dateFormatter(item.date)} {item.prepared_by}{item.payment_type}{item.status}{item.Amount} - {dataFormatter.booleanFormatter(item.cash_balance)} + {item.project_code} + {item.document_status} - {dataFormatter.dateTimeFormatter(item.payment_date)} - {item.amount}{item.shelf_number}{item.approved_by}
DepartureDateArrivalPlaceReturnDate RequisitionDate - {item.arrival_place} - {dataFormatter.dateTimeFormatter( item.return_date, @@ -327,8 +321,6 @@ const OrganizationsView = () => { DepartureDateArrivalPlaceReturnDate RequisitionDate - {item.arrival_place} - {dataFormatter.dateTimeFormatter( item.return_date, @@ -558,6 +546,72 @@ const OrganizationsView = () => { + <> +

Departments organizations

+ +
+ + + + + + {organizations.departments_organizations && + Array.isArray(organizations.departments_organizations) && + organizations.departments_organizations.map( + (item: any) => ( + + router.push( + `/departments/departments-view/?id=${item.id}`, + ) + } + > + ), + )} + +
+
+ {!organizations?.departments_organizations?.length && ( +
No data
+ )} +
+ + + <> +

Places organizations

+ +
+ + + + + + {organizations.places_organizations && + Array.isArray(organizations.places_organizations) && + organizations.places_organizations.map((item: any) => ( + + router.push(`/places/places-view/?id=${item.id}`) + } + > + ))} + +
+
+ {!organizations?.places_organizations?.length && ( +
No data
+ )} +
+ + { component={SelectField} options={initialValues.document} itemRef={'documents'} - showField={'document_number'} + showField={'id'} > @@ -148,7 +148,7 @@ const EditPayments = () => { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > diff --git a/frontend/src/pages/payments/payments-edit.tsx b/frontend/src/pages/payments/payments-edit.tsx index a2bf2ef..290db84 100644 --- a/frontend/src/pages/payments/payments-edit.tsx +++ b/frontend/src/pages/payments/payments-edit.tsx @@ -106,7 +106,7 @@ const EditPaymentsPage = () => { component={SelectField} options={initialValues.document} itemRef={'documents'} - showField={'document_number'} + showField={'id'} > @@ -146,7 +146,7 @@ const EditPaymentsPage = () => { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > diff --git a/frontend/src/pages/payments/payments-view.tsx b/frontend/src/pages/payments/payments-view.tsx index 7c570b8..4fbfa73 100644 --- a/frontend/src/pages/payments/payments-view.tsx +++ b/frontend/src/pages/payments/payments-view.tsx @@ -61,7 +61,7 @@ const PaymentsView = () => {

Document

-

{payments?.document?.document_number ?? 'No data'}

+

{payments?.document?.id ?? 'No data'}

@@ -94,7 +94,7 @@ const PaymentsView = () => {

organizations

-

{payments?.organizations?.name ?? 'No data'}

+

{payments?.organizations?.id ?? 'No data'}

diff --git a/frontend/src/pages/places/[placesId].tsx b/frontend/src/pages/places/[placesId].tsx new file mode 100644 index 0000000..8acb4db --- /dev/null +++ b/frontend/src/pages/places/[placesId].tsx @@ -0,0 +1,135 @@ +import { mdiChartTimelineVariant, mdiUpload } from '@mdi/js'; +import Head from 'next/head'; +import React, { ReactElement, useEffect, useState } from 'react'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; +import dayjs from 'dayjs'; + +import CardBox from '../../components/CardBox'; +import LayoutAuthenticated from '../../layouts/Authenticated'; +import SectionMain from '../../components/SectionMain'; +import SectionTitleLineWithButton from '../../components/SectionTitleLineWithButton'; +import { getPageTitle } from '../../config'; + +import { Field, Form, Formik } from 'formik'; +import FormField from '../../components/FormField'; +import BaseDivider from '../../components/BaseDivider'; +import BaseButtons from '../../components/BaseButtons'; +import BaseButton from '../../components/BaseButton'; +import FormCheckRadio from '../../components/FormCheckRadio'; +import FormCheckRadioGroup from '../../components/FormCheckRadioGroup'; +import FormFilePicker from '../../components/FormFilePicker'; +import FormImagePicker from '../../components/FormImagePicker'; +import { SelectField } from '../../components/SelectField'; +import { SelectFieldMany } from '../../components/SelectFieldMany'; +import { SwitchField } from '../../components/SwitchField'; +import { RichTextField } from '../../components/RichTextField'; + +import { update, fetch } from '../../stores/places/placesSlice'; +import { useAppDispatch, useAppSelector } from '../../stores/hooks'; +import { useRouter } from 'next/router'; +import { saveFile } from '../../helpers/fileSaver'; +import dataFormatter from '../../helpers/dataFormatter'; +import ImageField from '../../components/ImageField'; + +import { hasPermission } from '../../helpers/userPermissions'; + +const EditPlaces = () => { + const router = useRouter(); + const dispatch = useAppDispatch(); + const initVals = { + organizations: null, + }; + const [initialValues, setInitialValues] = useState(initVals); + + const { places } = useAppSelector((state) => state.places); + + const { currentUser } = useAppSelector((state) => state.auth); + + const { placesId } = router.query; + + useEffect(() => { + dispatch(fetch({ id: placesId })); + }, [placesId]); + + useEffect(() => { + if (typeof places === 'object') { + setInitialValues(places); + } + }, [places]); + + useEffect(() => { + if (typeof places === 'object') { + const newInitialVal = { ...initVals }; + + Object.keys(initVals).forEach((el) => (newInitialVal[el] = places[el])); + + setInitialValues(newInitialVal); + } + }, [places]); + + const handleSubmit = async (data) => { + await dispatch(update({ id: placesId, data })); + await router.push('/places/places-list'); + }; + + return ( + <> + + {getPageTitle('Edit places')} + + + + {''} + + + handleSubmit(values)} + > + + + + + + + + + + router.push('/places/places-list')} + /> + + + + + + + ); +}; + +EditPlaces.getLayout = function getLayout(page: ReactElement) { + return ( + + {page} + + ); +}; + +export default EditPlaces; diff --git a/frontend/src/pages/places/places-edit.tsx b/frontend/src/pages/places/places-edit.tsx new file mode 100644 index 0000000..a1037b3 --- /dev/null +++ b/frontend/src/pages/places/places-edit.tsx @@ -0,0 +1,133 @@ +import { mdiChartTimelineVariant, mdiUpload } from '@mdi/js'; +import Head from 'next/head'; +import React, { ReactElement, useEffect, useState } from 'react'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; +import dayjs from 'dayjs'; + +import CardBox from '../../components/CardBox'; +import LayoutAuthenticated from '../../layouts/Authenticated'; +import SectionMain from '../../components/SectionMain'; +import SectionTitleLineWithButton from '../../components/SectionTitleLineWithButton'; +import { getPageTitle } from '../../config'; + +import { Field, Form, Formik } from 'formik'; +import FormField from '../../components/FormField'; +import BaseDivider from '../../components/BaseDivider'; +import BaseButtons from '../../components/BaseButtons'; +import BaseButton from '../../components/BaseButton'; +import FormCheckRadio from '../../components/FormCheckRadio'; +import FormCheckRadioGroup from '../../components/FormCheckRadioGroup'; +import FormFilePicker from '../../components/FormFilePicker'; +import FormImagePicker from '../../components/FormImagePicker'; +import { SelectField } from '../../components/SelectField'; +import { SelectFieldMany } from '../../components/SelectFieldMany'; +import { SwitchField } from '../../components/SwitchField'; +import { RichTextField } from '../../components/RichTextField'; + +import { update, fetch } from '../../stores/places/placesSlice'; +import { useAppDispatch, useAppSelector } from '../../stores/hooks'; +import { useRouter } from 'next/router'; +import { saveFile } from '../../helpers/fileSaver'; +import dataFormatter from '../../helpers/dataFormatter'; +import ImageField from '../../components/ImageField'; + +import { hasPermission } from '../../helpers/userPermissions'; + +const EditPlacesPage = () => { + const router = useRouter(); + const dispatch = useAppDispatch(); + const initVals = { + organizations: null, + }; + const [initialValues, setInitialValues] = useState(initVals); + + const { places } = useAppSelector((state) => state.places); + + const { currentUser } = useAppSelector((state) => state.auth); + + const { id } = router.query; + + useEffect(() => { + dispatch(fetch({ id: id })); + }, [id]); + + useEffect(() => { + if (typeof places === 'object') { + setInitialValues(places); + } + }, [places]); + + useEffect(() => { + if (typeof places === 'object') { + const newInitialVal = { ...initVals }; + Object.keys(initVals).forEach((el) => (newInitialVal[el] = places[el])); + setInitialValues(newInitialVal); + } + }, [places]); + + const handleSubmit = async (data) => { + await dispatch(update({ id: id, data })); + await router.push('/places/places-list'); + }; + + return ( + <> + + {getPageTitle('Edit places')} + + + + {''} + + + handleSubmit(values)} + > +
+ + + + + + + + + router.push('/places/places-list')} + /> + + +
+
+
+ + ); +}; + +EditPlacesPage.getLayout = function getLayout(page: ReactElement) { + return ( + + {page} + + ); +}; + +export default EditPlacesPage; diff --git a/frontend/src/pages/places/places-view.tsx b/frontend/src/pages/places/places-view.tsx new file mode 100644 index 0000000..b9ce56e --- /dev/null +++ b/frontend/src/pages/places/places-view.tsx @@ -0,0 +1,86 @@ +import React, { ReactElement, useEffect } from 'react'; +import Head from 'next/head'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; +import dayjs from 'dayjs'; +import { useAppDispatch, useAppSelector } from '../../stores/hooks'; +import { useRouter } from 'next/router'; +import { fetch } from '../../stores/places/placesSlice'; +import { saveFile } from '../../helpers/fileSaver'; +import dataFormatter from '../../helpers/dataFormatter'; +import ImageField from '../../components/ImageField'; +import LayoutAuthenticated from '../../layouts/Authenticated'; +import { getPageTitle } from '../../config'; +import SectionTitleLineWithButton from '../../components/SectionTitleLineWithButton'; +import SectionMain from '../../components/SectionMain'; +import CardBox from '../../components/CardBox'; +import BaseButton from '../../components/BaseButton'; +import BaseDivider from '../../components/BaseDivider'; +import { mdiChartTimelineVariant } from '@mdi/js'; +import { SwitchField } from '../../components/SwitchField'; +import FormField from '../../components/FormField'; + +import { hasPermission } from '../../helpers/userPermissions'; + +const PlacesView = () => { + const router = useRouter(); + const dispatch = useAppDispatch(); + const { places } = useAppSelector((state) => state.places); + + const { currentUser } = useAppSelector((state) => state.auth); + + const { id } = router.query; + + function removeLastCharacter(str) { + console.log(str, `str`); + return str.slice(0, -1); + } + + useEffect(() => { + dispatch(fetch({ id })); + }, [dispatch, id]); + + return ( + <> + + {getPageTitle('View places')} + + + + + + +
+

organizations

+ +

{places?.organizations?.id ?? 'No data'}

+
+ + + + router.push('/places/places-list')} + /> +
+
+ + ); +}; + +PlacesView.getLayout = function getLayout(page: ReactElement) { + return ( + {page} + ); +}; + +export default PlacesView; diff --git a/frontend/src/pages/projects/[projectsId].tsx b/frontend/src/pages/projects/[projectsId].tsx index d8ed2a5..3306287 100644 --- a/frontend/src/pages/projects/[projectsId].tsx +++ b/frontend/src/pages/projects/[projectsId].tsx @@ -129,7 +129,7 @@ const EditProjects = () => { component={SelectField} options={initialValues.organization} itemRef={'organizations'} - showField={'name'} + showField={'id'} >
)} @@ -141,7 +141,7 @@ const EditProjects = () => { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > diff --git a/frontend/src/pages/projects/projects-edit.tsx b/frontend/src/pages/projects/projects-edit.tsx index 6b156e3..00c3b9e 100644 --- a/frontend/src/pages/projects/projects-edit.tsx +++ b/frontend/src/pages/projects/projects-edit.tsx @@ -127,7 +127,7 @@ const EditProjectsPage = () => { component={SelectField} options={initialValues.organization} itemRef={'organizations'} - showField={'name'} + showField={'id'} > )} @@ -139,7 +139,7 @@ const EditProjectsPage = () => { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > diff --git a/frontend/src/pages/projects/projects-view.tsx b/frontend/src/pages/projects/projects-view.tsx index e31c329..b1b9baa 100644 --- a/frontend/src/pages/projects/projects-view.tsx +++ b/frontend/src/pages/projects/projects-view.tsx @@ -77,93 +77,16 @@ const ProjectsView = () => {

Organization

-

{projects?.organization?.name ?? 'No data'}

+

{projects?.organization?.id ?? 'No data'}

)}

organizations

-

{projects?.organizations?.name ?? 'No data'}

+

{projects?.organizations?.id ?? 'No data'}

- <> -

Documents Project

- -
- - - - - - - - - - - - - - - - - - - - - - - - {projects.documents_project && - Array.isArray(projects.documents_project) && - projects.documents_project.map((item: any) => ( - - router.push( - `/documents/documents-view/?id=${item.id}`, - ) - } - > - - - - - - - - - - - - - - - - - - - ))} - -
DocumentNumberDocumentTypePreparedByStatusCashBalancePaymentDateAmountShelfNumberApprovedBy
- {item.document_number} - - {item.document_type} - {item.prepared_by}{item.status} - {dataFormatter.booleanFormatter(item.cash_balance)} - - {dataFormatter.dateTimeFormatter(item.payment_date)} - {item.amount}{item.shelf_number}{item.approved_by}
-
- {!projects?.documents_project?.length && ( -
No data
- )} -
- - <>

Field_site_payment_requisitions Project @@ -184,8 +107,6 @@ const ProjectsView = () => {

DepartureDateArrivalPlaceReturnDate RequisitionDate - {item.arrival_place} - {dataFormatter.dateTimeFormatter( item.return_date, diff --git a/frontend/src/pages/users/[usersId].tsx b/frontend/src/pages/users/[usersId].tsx index 965dcf6..7bbe178 100644 --- a/frontend/src/pages/users/[usersId].tsx +++ b/frontend/src/pages/users/[usersId].tsx @@ -183,7 +183,7 @@ const EditUsers = () => { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > diff --git a/frontend/src/pages/users/users-edit.tsx b/frontend/src/pages/users/users-edit.tsx index c81e94d..af2f5f0 100644 --- a/frontend/src/pages/users/users-edit.tsx +++ b/frontend/src/pages/users/users-edit.tsx @@ -181,7 +181,7 @@ const EditUsersPage = () => { component={SelectField} options={initialValues.organizations} itemRef={'organizations'} - showField={'name'} + showField={'id'} > diff --git a/frontend/src/pages/users/users-view.tsx b/frontend/src/pages/users/users-view.tsx index f897235..ef584f2 100644 --- a/frontend/src/pages/users/users-view.tsx +++ b/frontend/src/pages/users/users-view.tsx @@ -145,7 +145,7 @@ const UsersView = () => {

Organizations

-

{users?.organizations?.name ?? 'No data'}

+

{users?.organizations?.id ?? 'No data'}

diff --git a/frontend/src/pages/web_pages/home.tsx b/frontend/src/pages/web_pages/home.tsx index 9cde712..c1bdbf9 100644 --- a/frontend/src/pages/web_pages/home.tsx +++ b/frontend/src/pages/web_pages/home.tsx @@ -77,7 +77,7 @@ export default function WebSite() {