Skip to content

Commit

Permalink
novas funcionalidades
Browse files Browse the repository at this point in the history
  • Loading branch information
caniswim committed Feb 4, 2025
1 parent dbd5b57 commit 2c483a9
Showing 1 changed file with 54 additions and 27 deletions.
81 changes: 54 additions & 27 deletions src/services/shopify.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ async findOrderByAppmaxId(appmaxId) {
// Atualiza o status do pedido via GraphQL de acordo com o status solicitado
if (status === 'cancelled' || financialStatus === 'cancelled') {
if (currentOrder.financial_status !== 'voided') {
await this.cancelOrder(orderId);
await this.cancelOrder(updatedOrder.order);
}
} else if (financialStatus === 'refunded') {
if (currentOrder.financial_status !== 'refunded') {
Expand Down Expand Up @@ -847,40 +847,67 @@ async findOrderByAppmaxId(appmaxId) {
}

/**
* Cancela um pedido usando a mutation orderCancel
* Cancela um pedido na Shopify
* @param {Object} orderData Dados do pedido
*/
async cancelOrder(orderId) {
const mutation = `
mutation orderCancel($input: OrderCancelInput!) {
orderCancel(input: $input) {
order {
id
displayFinancialStatus
cancelledAt
}
userErrors {
field
message
async cancelOrder(orderData) {
try {
// Busca o ID do pedido na Shopify
const shopifyId = await this.findShopifyOrderId(orderData.id);

if (!shopifyId) {
logger.warn(`Pedido Appmax #${orderData.id} não encontrado na Shopify para cancelamento`);
return;
}

logger.info(`Cancelando pedido #${shopifyId} na Shopify`);

const mutation = `
mutation orderCancel($orderId: ID!, $reason: OrderCancelReason!) {
orderCancel(
orderId: $orderId,
reason: $reason
) {
order {
id
displayFinancialStatus
cancelledAt
}
userErrors {
field
message
}
}
}
}
`;
`;

const variables = {
input: {
id: `gid://shopify/Order/${orderId}`
const variables = {
orderId: `gid://shopify/Order/${shopifyId}`,
reason: "CUSTOMER" // CUSTOMER, INVENTORY, FRAUD, DECLINED, OTHER
};

const result = await this.graphql(mutation, variables);

if (result.userErrors && result.userErrors.length > 0) {
throw new Error(`Erro ao cancelar pedido: ${result.userErrors[0].message}`);
}
};

logger.info(`Cancelando pedido #${orderId} via GraphQL`);
const result = await this.graphql(mutation, variables);
logger.info(`Pedido #${shopifyId} cancelado com sucesso na Shopify`);

// Atualiza o status no banco local
await db.updateOrderStatus(shopifyId, 'cancelled', {
cancelled_at: new Date().toISOString(),
cancel_reason: 'CUSTOMER'
});

if (result.orderCancel.userErrors?.length > 0) {
const errors = result.orderCancel.userErrors.map(e => e.message).join('; ');
throw new AppError(`Erro ao cancelar pedido: ${errors}`, 400);
} catch (error) {
logger.error('Erro ao cancelar pedido na Shopify:', {
error: error.message,
orderId: orderData.id,
shopifyId
});
throw error;
}

return result.orderCancel.order;
}

/**
Expand Down

0 comments on commit 2c483a9

Please sign in to comment.