commit
This commit is contained in:
506
src/sales/pre-order/pre-order.service.ts
Normal file
506
src/sales/pre-order/pre-order.service.ts
Normal file
@@ -0,0 +1,506 @@
|
||||
/*
|
||||
https://docs.nestjs.com/providers#services
|
||||
*/
|
||||
|
||||
import { Injectable, HttpException, HttpStatus } from '@nestjs/common';
|
||||
import { Pcorcavendai } from 'src/domain/entity/tables/pcorcavendai.entity';
|
||||
import { Cart } from 'src/domain/models/cart.model';
|
||||
import { SharedService } from 'src/shared/services/shared.service';
|
||||
import { Connection } from 'typeorm';
|
||||
import { Pcorcavendac } from '../../domain/entity/tables/pcorcavendac.entity';
|
||||
import { Shopping } from '../../domain/entity/tables/estprevendac.entity';
|
||||
import { connectionOptions } from 'src/configs/typeorm.config';
|
||||
import { ListsService } from 'src/backoffice/lists/lists.service';
|
||||
import { CustomerService } from '../customer/customer.service';
|
||||
import { AddressCustomerService } from '../address-customer/address-customer.service';
|
||||
|
||||
@Injectable()
|
||||
export class PreOrderService {
|
||||
|
||||
constructor(
|
||||
private readonly sharedService: SharedService,
|
||||
private readonly listsService: ListsService,
|
||||
private readonly customerService: CustomerService,
|
||||
private readonly addressCustomerService: AddressCustomerService) { }
|
||||
|
||||
async create(cart: Cart) {
|
||||
console.log('cart: ' + JSON.stringify(cart));
|
||||
|
||||
// if (cart.idCustomer === 1 && cart.preCustomerDocument !== null) {
|
||||
// this.createPreCustomer(cart);
|
||||
// }
|
||||
|
||||
const connection = new Connection(connectionOptions);
|
||||
await connection.connect();
|
||||
const queryRunner = connection.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
await queryRunner.startTransaction();
|
||||
console.log('Processo 1');
|
||||
try {
|
||||
const customer = await this.sharedService.getCustomer(cart.idCustomer);
|
||||
let idPreOrder = 0;
|
||||
let idRca = 0;
|
||||
const preOrder = new Pcorcavendac();
|
||||
const shopping = await queryRunner.query(' SELECT ESTPREVENDAC.NUMORCA as "idPreOrder", ESTPREVENDAC.CODUSUR as "idRca" ' +
|
||||
' FROM ESTPREVENDAC ' +
|
||||
' WHERE ESTPREVENDAC.ID = :1 ' +
|
||||
' AND ESTPREVENDAC.NUMORCA IS NOT NULL ', [cart.id]);
|
||||
if (shopping.length > 0) {
|
||||
idPreOrder = shopping[0].idPreOrder;
|
||||
const existPreOrder = await queryRunner
|
||||
.query('SELECT PCORCAVENDAC.CODUSUR as "idRca" FROM PCORCAVENDAC WHERE NUMORCA = :NUMORCA', [idPreOrder]);
|
||||
idRca = existPreOrder[0].idRca;
|
||||
await queryRunner.query('DELETE FROM PCORCAVENDAI WHERE NUMORCA = :1', [idPreOrder]);
|
||||
await queryRunner.query('DELETE FROM PCORCAVENDAC WHERE NUMORCA = :1', [idPreOrder]);
|
||||
} else {
|
||||
idPreOrder = await this.sharedService.generateIdPreOrder(cart.idSeller);
|
||||
}
|
||||
|
||||
//Create pre-customers
|
||||
if (cart.idCustomer === 1 && cart.preCustomerDocument !== null) {
|
||||
const preCustomer = await queryRunner.query(`SELECT ESTVENDAPRECLIENTE.CPF FROM ESTVENDAPRECLIENTE ` +
|
||||
` WHERE IDCART = :1 AND CPF = :2`, [cart.id, cart.preCustomerDocument]);
|
||||
if (preCustomer === null || preCustomer.length === 0) {
|
||||
const sqlInsert = ` INSERT INTO ESTVENDAPRECLIENTE ( CPF, IDCART, NOME, TELEFONE, DTCADASTRO, CODUSUR, NUMPEDRCA ) ` +
|
||||
` VALUES ( REGEXP_REPLACE(:CPF, '[^0-9]', '') , :IDCART, :NOME, :TELEFONE, SYSDATE, :CODUSUR, :NUMPEDRCA ) `;
|
||||
await queryRunner.query(sqlInsert, [cart.preCustomerDocument,
|
||||
cart.id, cart.preCustomerName, cart.preCustomerPhone, cart.idSeller, idPreOrder]);
|
||||
}
|
||||
} else {
|
||||
if ( cart.preCustomerDocument != null ) {
|
||||
await queryRunner.query(`DELETE FROM ESTVENDAPRECLIENTE WHERE IDCART = :1 AND REGEXP_REPLACE(:CPF, '[^0-9]', '')`,
|
||||
[cart.id, cart.preCustomerDocument]);
|
||||
}
|
||||
}
|
||||
|
||||
const dataAtual = await queryRunner.query("SELECT TO_CHAR(SYSDATE, \'DD\') AS \"dia\" " +
|
||||
" ,TO_CHAR(SYSDATE, \'MM\') AS \"mes\" " +
|
||||
" ,TO_CHAR(SYSDATE, \'YYYY\') AS \"ano\" FROM DUAL");
|
||||
preOrder.numorca = idPreOrder;
|
||||
const dateNow = new Date(dataAtual[0].ano, dataAtual[0].mes - 1, dataAtual[0].dia);
|
||||
const dateDelivery = new Date(dataAtual[0].ano, dataAtual[0].mes, dataAtual[0].dia);
|
||||
dateDelivery.setDate(dateDelivery.getDate() + 3); // setDate(dateNow.getDate() + 3);
|
||||
console.log('Processo 2');
|
||||
let numeroSeq = 1;
|
||||
for (const item of cart.itens) {
|
||||
const itemPreOrder = new Pcorcavendai();
|
||||
itemPreOrder.numorca = preOrder.numorca;
|
||||
itemPreOrder.data = this.formatDate(new Date());
|
||||
itemPreOrder.codcli = cart.idCustomer;
|
||||
itemPreOrder.codprod = item.idProduct;
|
||||
itemPreOrder.codauxiliar = item.ean;
|
||||
itemPreOrder.codusur = ( idRca > 0 ) ? idRca : cart.idSeller;
|
||||
itemPreOrder.qt = item.quantity;
|
||||
itemPreOrder.pvenda = item.salePrice;
|
||||
itemPreOrder.ptabela = item.listPrice;
|
||||
itemPreOrder.numcar = 0;
|
||||
itemPreOrder.posicao = 'L';
|
||||
itemPreOrder.st = 0;
|
||||
itemPreOrder.vlcustocont = 0;
|
||||
itemPreOrder.vlcustofin = 0;
|
||||
itemPreOrder.vlcustoreal = 0;
|
||||
itemPreOrder.vlcustorep = 0;
|
||||
itemPreOrder.percom = 0;
|
||||
itemPreOrder.perdesc = (item.listPrice > 0) ? ((item.listPrice - item.salePrice) / item.listPrice) * 100 : 0;
|
||||
itemPreOrder.numseq = numeroSeq;
|
||||
itemPreOrder.pvendabase = 0;
|
||||
itemPreOrder.codst = await this.
|
||||
sharedService.
|
||||
getTaxId(item.idProduct,
|
||||
cart.saleStore,
|
||||
customer.estent);
|
||||
itemPreOrder.custofinest = 0;
|
||||
itemPreOrder.codauxiliar = item.ean;
|
||||
itemPreOrder.codfilialretira = item.idStock;
|
||||
itemPreOrder.poriginal = 0;
|
||||
itemPreOrder.pvendabase = 0;
|
||||
itemPreOrder.pvenda1 = 0;
|
||||
itemPreOrder.tipoentrega = item.deliveryMethod;
|
||||
// eslint-disable-next-line @typescript-eslint/camelcase
|
||||
itemPreOrder.rp_imediata = (item.deliveryMethod == "RA") ? "S" : "N";
|
||||
itemPreOrder.complemento = item.descriptionAux;
|
||||
itemPreOrder.ambiente = item.environment;
|
||||
|
||||
console.log('Processo 3');
|
||||
|
||||
await queryRunner.manager
|
||||
.createQueryBuilder()
|
||||
.insert()
|
||||
.into(Pcorcavendai)
|
||||
.values(itemPreOrder)
|
||||
.execute();
|
||||
console.log('Processo 4');
|
||||
|
||||
numeroSeq = numeroSeq + 1;
|
||||
}
|
||||
|
||||
if (cart.shippingValue > 0) {
|
||||
const itemPreOrder = new Pcorcavendai();
|
||||
itemPreOrder.numorca = preOrder.numorca;
|
||||
itemPreOrder.data = this.formatDate(new Date());
|
||||
itemPreOrder.codcli = cart.idCustomer;
|
||||
itemPreOrder.codprod = 48500;
|
||||
itemPreOrder.codauxiliar = 48500;
|
||||
itemPreOrder.codusur = ( idRca > 0 ) ? idRca : cart.idSeller;
|
||||
itemPreOrder.qt = 1;
|
||||
itemPreOrder.pvenda = Number.parseFloat(cart.shippingValue.toString());
|
||||
itemPreOrder.ptabela = Number.parseFloat(cart.shippingValue.toString());
|
||||
itemPreOrder.numcar = 0;
|
||||
itemPreOrder.posicao = 'L';
|
||||
itemPreOrder.st = 0;
|
||||
itemPreOrder.vlcustocont = 0;
|
||||
itemPreOrder.vlcustofin = 0;
|
||||
itemPreOrder.vlcustoreal = 0;
|
||||
itemPreOrder.vlcustorep = 0;
|
||||
itemPreOrder.percom = 0;
|
||||
itemPreOrder.perdesc = 0;
|
||||
itemPreOrder.numseq = numeroSeq;
|
||||
itemPreOrder.pvendabase = 0;
|
||||
itemPreOrder.codst = await this.
|
||||
sharedService.
|
||||
getTaxId(48500,
|
||||
cart.saleStore,
|
||||
customer.estent);
|
||||
itemPreOrder.custofinest = 0;
|
||||
itemPreOrder.codauxiliar = 48500;
|
||||
itemPreOrder.codfilialretira = cart.saleStore;
|
||||
itemPreOrder.poriginal = 0;
|
||||
itemPreOrder.pvendabase = 0;
|
||||
itemPreOrder.pvenda1 = 0;
|
||||
itemPreOrder.tipoentrega = 'EF';
|
||||
console.log('Processo 3');
|
||||
|
||||
await queryRunner.manager
|
||||
.createQueryBuilder()
|
||||
.insert()
|
||||
.into(Pcorcavendai)
|
||||
.values(itemPreOrder)
|
||||
.execute();
|
||||
console.log('Processo 4');
|
||||
|
||||
numeroSeq = numeroSeq + 1;
|
||||
}
|
||||
|
||||
//#region create PCORCAVENDAC
|
||||
console.log('Processo 5' + cart);
|
||||
const supervisor = await queryRunner.manager.query('SELECT PCUSUARI.CODSUPERVISOR as "codsupervisor" FROM PCUSUARI WHERE CODUSUR = :1', [cart.idSeller]);
|
||||
console.log('Supervisor: ' + JSON.stringify(supervisor));
|
||||
preOrder.posicao = 'L';
|
||||
preOrder.numcar = 0;
|
||||
preOrder.numpedrca = preOrder.numorca;
|
||||
preOrder.percvenda = 100;
|
||||
preOrder.codendent = cart.idAddress;
|
||||
preOrder.codcob = cart.idBilling;
|
||||
preOrder.codplpag = cart.idPaymentPlan;
|
||||
preOrder.condvenda = 7;
|
||||
preOrder.data = this.formatDate(new Date());
|
||||
preOrder.hora = new Date().getHours();
|
||||
preOrder.minuto = new Date().getMinutes();
|
||||
preOrder.dtentrega = cart.shippingDate; // dateDelivery;
|
||||
preOrder.codfilial = cart.saleStore,
|
||||
preOrder.codusur = ( idRca > 0 ) ? idRca : cart.idSeller;
|
||||
preOrder.codemitente = cart.userId;
|
||||
preOrder.codusur3 = cart.idProfessional;
|
||||
preOrder.tipoprioridadeentrega = cart.shippingPriority;
|
||||
if (supervisor != null && supervisor.length > 0) {
|
||||
preOrder.codsupervisor = supervisor[0].codsupervisor;
|
||||
}
|
||||
preOrder.codemitente = cart.userId;
|
||||
preOrder.vlfrete = cart.shippingValue;
|
||||
preOrder.vloutrasdesp = 0;
|
||||
preOrder.numitens = cart.itens.length;
|
||||
preOrder.obs1 = cart.notation1;
|
||||
preOrder.obs2 = cart.notation2;
|
||||
preOrder.obsentrega1 = cart.deliveryNote1;
|
||||
preOrder.obsentrega2 = cart.deliveryNote2;
|
||||
preOrder.obsentrega3 = cart.deliveryNote3;
|
||||
|
||||
//Dados do cliente
|
||||
preOrder.codcli = cart.idCustomer;
|
||||
preOrder.codpraca = customer.codpraca;
|
||||
preOrder.fretedespacho = customer.fretedespacho;
|
||||
preOrder.data = dateNow;
|
||||
preOrder.vlfrete = Number.parseFloat(cart.shippingValue.toString());
|
||||
//#endregion
|
||||
|
||||
//#region create PCPEDITEMP
|
||||
|
||||
|
||||
|
||||
//#endregion
|
||||
|
||||
// execute some operations on this transaction:
|
||||
console.log('Processo 6');
|
||||
|
||||
const totalOrca = await queryRunner.
|
||||
query('SELECT SUM((PCORCAVENDAI.QT * PCORCAVENDAI.PVENDA)) AS \"valorTotal\" ' +
|
||||
' ,SUM(PCORCAVENDAI.QT * PCORCAVENDAI.PTABELA ) AS \"valorTabela\" ' +
|
||||
' ,SUM(PCORCAVENDAI.QT * PCPRODUT.PESOBRUTO ) AS \"pesoTotal\" ' +
|
||||
' ,SUM(PCORCAVENDAI.QT * PCPRODUT.VOLUME ) AS \"volumeTotal\" ' +
|
||||
' ,SUM(PCORCAVENDAI.QT * ( PCORCAVENDAI.PTABELA - PCORCAVENDAI.PVENDA) ) AS \"valorDesconto\" ' +
|
||||
' FROM PCORCAVENDAI, PCPRODUT ' +
|
||||
' WHERE PCORCAVENDAI.CODPROD = PCPRODUT.CODPROD ' +
|
||||
' AND PCORCAVENDAI.NUMORCA = :idPreOrder ', [preOrder.numorca]);
|
||||
|
||||
preOrder.vltotal = totalOrca[0].valorTotal;
|
||||
preOrder.vlatend = totalOrca[0].valorTotal;
|
||||
preOrder.vltabela = totalOrca[0].valorTabela;
|
||||
preOrder.totpeso = totalOrca[0].pesoTotal;
|
||||
preOrder.totvolume = totalOrca[0].volumeTotal;
|
||||
preOrder.vldesconto = totalOrca[0].valorDesconto;
|
||||
|
||||
await queryRunner.manager
|
||||
.createQueryBuilder()
|
||||
.insert()
|
||||
.into(Pcorcavendac)
|
||||
.values(preOrder)
|
||||
.execute();
|
||||
|
||||
|
||||
const sql = 'UPDATE PCORCAVENDAC SET DATA = TRUNC(SYSDATE) ' +
|
||||
' WHERE PCORCAVENDAC.NUMORCA = :1 ';
|
||||
|
||||
await queryRunner.query(sql, [
|
||||
preOrder.numorca
|
||||
]);
|
||||
|
||||
|
||||
console.log('Processo 7');
|
||||
|
||||
await queryRunner.manager
|
||||
.createQueryBuilder()
|
||||
.update(Shopping)
|
||||
.set({
|
||||
numorca: idPreOrder
|
||||
})
|
||||
.where("ESTPREVENDAC.ID = :idcart", { idcart: cart.id })
|
||||
.execute();
|
||||
|
||||
await queryRunner.commitTransaction();
|
||||
|
||||
return preOrder;
|
||||
|
||||
} catch (err) {
|
||||
await queryRunner.rollbackTransaction();
|
||||
console.log(err);
|
||||
throw err;
|
||||
} finally {
|
||||
await queryRunner.release();
|
||||
await connection.close();
|
||||
}
|
||||
}
|
||||
|
||||
formatDate(date: Date) {
|
||||
const day = date.getDay();
|
||||
const month = date.getMonth() + 1;
|
||||
const year = date.getFullYear();
|
||||
|
||||
const newDate: Date = new Date(year, month, day);
|
||||
|
||||
console.log(newDate);
|
||||
|
||||
return newDate;
|
||||
}
|
||||
|
||||
async getPreOrders(sellerId: number, storeId: string, start: Date, end: Date, idPreOrder: number, document: string, nameCustomer: string) {
|
||||
console.log('Vendedor: ' + sellerId);
|
||||
const connection = new Connection(connectionOptions);
|
||||
await connection.connect();
|
||||
const queryRunner = connection.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
try {
|
||||
const startDate = new Date(start);
|
||||
let day = startDate.getDate();
|
||||
let month = ("00" + (startDate.getMonth() + 1)).slice(-2);
|
||||
let year = startDate.getFullYear();
|
||||
const startFormat = day + "/" + month + "/" + year;
|
||||
const endDate = new Date(end);
|
||||
day = endDate.getDate();
|
||||
month = ("00" + (endDate.getMonth() + 1)).slice(-2);
|
||||
year = endDate.getFullYear();
|
||||
const endFormat = day + "/" + month + "/" + year;
|
||||
let sql = 'SELECT TO_CHAR(PCORCAVENDAC.DATA, \'DD/MM/YYYY\') as "data" ' +
|
||||
' ,PCORCAVENDAC.NUMORCA as "idPreOrder" ' +
|
||||
' ,PCORCAVENDAC.VLATEND as "value" ' +
|
||||
' ,PCORCAVENDAC.VLTABELA as "listValue" ' +
|
||||
' ,PCORCAVENDAC.CODCLI as "idCustomer" ' +
|
||||
` ,CASE WHEN PCORCAVENDAC.CODCLI = 1 THEN NVL(( SELECT ESTVENDAPRECLIENTE.NOME || '( PRE-CADASTRO)' ` +
|
||||
' FROM ESTVENDAPRECLIENTE ' +
|
||||
' WHERE ESTVENDAPRECLIENTE.IDCART = ESTPREVENDAC.ID AND ROWNUM = 1 ), ' +
|
||||
' PCCLIENT.CLIENTE ) ELSE PCCLIENT.CLIENTE END as "customer" ' +
|
||||
' ,PCORCAVENDAC.CODUSUR as "idSeller" ' +
|
||||
' ,PCUSUARI.NOME as "seller" ' +
|
||||
' ,CASE WHEN PCORCAVENDAC.ORCAMENTOUTILIZADO = \'S\' THEN \'ORÇAMENTO UTILIZADO\' ELSE \'PENDENTE\' END as "status"' +
|
||||
' ,PCORCAVENDAC.NUMPED as "orderId" ' +
|
||||
' ,( SELECT ESTVENDAPRECLIENTE.CPF FROM ESTVENDAPRECLIENTE WHERE ESTVENDAPRECLIENTE.IDCART = ESTPREVENDAC.ID AND ROWNUM = 1 ) as "cpfPreCustomer" ' +
|
||||
' ,( SELECT ESTVENDAPRECLIENTE.NOME FROM ESTVENDAPRECLIENTE WHERE ESTVENDAPRECLIENTE.IDCART = ESTPREVENDAC.ID AND ROWNUM = 1 ) as "namePreCustomer" ' +
|
||||
' FROM PCORCAVENDAC, PCCLIENT, PCUSUARI, ESTPREVENDAC ' +
|
||||
' WHERE PCORCAVENDAC.CODCLI = PCCLIENT.CODCLI ' +
|
||||
' AND PCORCAVENDAC.CODUSUR = PCUSUARI.CODUSUR ' +
|
||||
' AND PCORCAVENDAC.NUMORCA = ESTPREVENDAC.NUMORCA ' +
|
||||
' AND PCORCAVENDAC.CODFILIAL = :1 ' +
|
||||
' AND PCORCAVENDAC.DATA BETWEEN TO_DATE(:2, \'DD/MM/YYYY\') AND TO_DATE(:3, \'DD/MM/YYYY\')';
|
||||
|
||||
if (sellerId > 0) {
|
||||
sql += ` AND PCORCAVENDAC.CODUSUR = ${sellerId} `;
|
||||
}
|
||||
|
||||
if (idPreOrder > 0) {
|
||||
sql += ` AND PCORCAVENDAC.NUMORCA = ${idPreOrder} `;
|
||||
}
|
||||
|
||||
if ( document.length > 0 ) {
|
||||
sql += ` AND REGEXP_REPLACE(PCCLIENT.CGCENT, '[^0-9]', '') = REGEXP_REPLACE(${document}, '[^0-9]', '') `;
|
||||
}
|
||||
|
||||
if ( nameCustomer.length > 0 ) {
|
||||
sql += ` AND PCCLIENT.CLIENTE LIKE UPPER('${nameCustomer}')||'%' `;
|
||||
}
|
||||
|
||||
const preOrders =
|
||||
await queryRunner.query(sql, [storeId, startFormat, endFormat]);
|
||||
|
||||
return preOrders;
|
||||
} catch (err) {
|
||||
throw err;
|
||||
} finally {
|
||||
await queryRunner.release();
|
||||
await connection.close();
|
||||
}
|
||||
}
|
||||
|
||||
async getCartId(preOrderId: number) {
|
||||
const connection = new Connection(connectionOptions);
|
||||
await connection.connect();
|
||||
const queryRunner = connection.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
try {
|
||||
const preOrder = await queryRunner.query('SELECT PCORCAVENDAC.DATA as "createDate" ' +
|
||||
' ,PCORCAVENDAC.ORCAMENTOUTILIZADO as "preOrderFinish" ' +
|
||||
' ,PCORCAVENDAC.NUMPED as "orderId" ' +
|
||||
' ,PCORCAVENDAC.CODFILIAL as "invoiceStore" ' +
|
||||
' ,PCORCAVENDAC.CODCLI as "customerId" ' +
|
||||
' ,PCORCAVENDAC.CODPLPAG as "paymentPlanId" ' +
|
||||
' ,PCORCAVENDAC.CODCOB as "billindId" ' +
|
||||
' ,PCORCAVENDAC.CODENDENT as "addressId" ' +
|
||||
' ,PCORCAVENDAC.CODUSUR3 as "partnerId" ' +
|
||||
' ,ESTPREVENDAC.ID as "cartId" ' +
|
||||
' ,PCORCAVENDAC.OBS as "notification" ' +
|
||||
' ,PCORCAVENDAC.OBS1 as "notification1" ' +
|
||||
' ,PCORCAVENDAC.OBS2 as "notification2" ' +
|
||||
' ,PCORCAVENDAC.OBSENTREGA1 as "notificationDelivery1" ' +
|
||||
' ,PCORCAVENDAC.OBSENTREGA2 as "notificationDelivery2" ' +
|
||||
' ,PCORCAVENDAC.OBSENTREGA3 as "notificationDelivery3" ' +
|
||||
' ,PCORCAVENDAC.DTENTREGA as "deliveryDate" ' +
|
||||
` ,NVL(PCORCAVENDAC.TIPOPRIORIDADEENTREGA, 'B') as "priorityDelivery" ` +
|
||||
' ,( SELECT ESTVENDAPRECLIENTE.CPF FROM ESTVENDAPRECLIENTE WHERE ESTVENDAPRECLIENTE.IDCART = ESTPREVENDAC.ID AND ROWNUM = 1 ) as "cpfPreCustomer" ' +
|
||||
' ,( SELECT ESTVENDAPRECLIENTE.NOME FROM ESTVENDAPRECLIENTE WHERE ESTVENDAPRECLIENTE.IDCART = ESTPREVENDAC.ID AND ROWNUM = 1 ) as "namePreCustomer" ' +
|
||||
' FROM PCORCAVENDAC, ESTPREVENDAC ' +
|
||||
' WHERE PCORCAVENDAC.NUMORCA = ESTPREVENDAC.NUMORCA ' +
|
||||
' AND PCORCAVENDAC.NUMORCA = :1', [preOrderId]);
|
||||
|
||||
if (preOrder.length == 0) {
|
||||
throw new HttpException(`Orçamento não foi localizado`, HttpStatus.NOT_FOUND);
|
||||
}
|
||||
|
||||
if (preOrder.preOrderFinish == 'S') {
|
||||
throw new HttpException(`Orçamento já utilizado, não pode sofre alterações. Número do pedido gerado: ${preOrder.orderId}`, HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
await queryRunner.query("BEGIN ESK_VENDA.ATUALIZAR_PRECO_VENDA(:idcart, :paymentPlanId); END;",
|
||||
[preOrder[0].cartId, preOrder[0].paymentPlanId]);
|
||||
|
||||
const invoiceStores = await this.listsService.GetStoreAll();
|
||||
const invoiceStore = await invoiceStores.find(data => data.id === preOrder[0].invoiceStore);
|
||||
const customer = await this.customerService.findCustomerById(preOrder[0].customerId);
|
||||
const billinds = await this.listsService.GetBilling(preOrder[0].customerId);
|
||||
const partners = await this.listsService.GetPartners();
|
||||
const preCustomer = await this.listsService.GetPreCustomer(preOrder[0].cartId);
|
||||
let address: any;
|
||||
if (preOrder[0].addressId > 0) {
|
||||
address = await this.addressCustomerService.getAddress(preOrder[0].customerId, preOrder[0].addressId);
|
||||
}
|
||||
// const address = await this.addressCustomerService.getAddress(preOrder[0].customerId, preOrder[0].addressId);
|
||||
const billing = billinds.find(data => data.codcob === preOrder[0].billindId);
|
||||
const paymentPlans = await this.listsService.GetPaymentPlan((billing !== null && billing !== undefined) ? billing.codcob : '9999');
|
||||
const paymentPlan = paymentPlans.find(data => data.codplpag === preOrder[0].paymentPlanId);
|
||||
const partner = partners.find(data => data.id === preOrder[0].partnerId);
|
||||
|
||||
|
||||
return {
|
||||
cartId: preOrder[0].cartId, invoiceStore: invoiceStore, customer: customer, partner: partner ?? null,
|
||||
paymentPlan: paymentPlan ?? null, billing: billing ?? null, address: address ?? null,
|
||||
notification: preOrder[0].notification, notification1: preOrder[0].notification1, notification2: preOrder[0].notification2,
|
||||
notificationDelivery1: preOrder[0].notificationDelivery1, notificationDelivery2: preOrder[0].notificationDelivery2,
|
||||
notificationDelivery3: preOrder[0].notificationDelivery3, deliveryDate: preOrder[0].deliveryDate,
|
||||
priorityDelivery: preOrder[0].priorityDelivery, preCustomer: preCustomer
|
||||
}
|
||||
|
||||
} finally {
|
||||
await queryRunner.release();
|
||||
await connection.close();
|
||||
}
|
||||
}
|
||||
|
||||
async getItensPreOrder(idPreOrder: number) {
|
||||
const connection = new Connection(connectionOptions);
|
||||
await connection.connect();
|
||||
const queryRunner = connection.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
let sql = '';
|
||||
|
||||
try {
|
||||
|
||||
sql = ` SELECT PCORCAVENDAI.CODPROD as "productId", PCPRODUT.DESCRICAO as "description", ` +
|
||||
` PCPRODUT.EMBALAGEM as "package", ` +
|
||||
` PCORCAVENDAI.COMPLEMENTO as "color" , ` +
|
||||
` PCORCAVENDAI.AMBIENTE as "local", ` +
|
||||
` PCORCAVENDAI.QT as "quantity", PCORCAVENDAI.PVENDA as "price", ` +
|
||||
` ( PCORCAVENDAI.QT * PCORCAVENDAI.PVENDA ) as "subTotal" ` +
|
||||
` FROM PCORCAVENDAI, PCORCAVENDAC, PCPRODUT ` +
|
||||
` WHERE PCORCAVENDAI.CODPROD = PCPRODUT.CODPROD ` +
|
||||
` AND PCORCAVENDAI.NUMORCA = PCORCAVENDAC.NUMORCA ` +
|
||||
` AND PCORCAVENDAC.NUMORCA = :NUMORCA ` +
|
||||
` ORDER BY PCORCAVENDAI.NUMSEQ `;
|
||||
const result = await queryRunner.query(sql, [idPreOrder]);
|
||||
return result;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
throw error;
|
||||
} finally {
|
||||
await queryRunner.release();
|
||||
await connection.close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
async createPreCustomer(cart: Cart) {
|
||||
|
||||
const connection = new Connection(connectionOptions);
|
||||
await connection.connect();
|
||||
const queryRunner = connection.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
await queryRunner.startTransaction();
|
||||
try {
|
||||
// const preCustomer = await queryRunner.query(`SELECT ESTVENDAPRECLIENTE.CPF FROM ESTVENDAPRECLIENTE ` +
|
||||
// ` WHERE IDCART = :1 AND CPF = :2`, [cart.id, cart.preCustomerDocument]);
|
||||
const sqlInsert = ` INSERT INTO ESTVENDAPRECLIENTE ( CPF, IDCART, NOME, TELEFONE, DTCADASTRO, CODUSUR ) ` +
|
||||
` VALUES ( REGEXP_REPLACE(:CPF, '[^0-9]', '') , :IDCART, :NOME, :TELEFONE, SYSDATE, :CODUSUR ) `;
|
||||
await queryRunner.query(sqlInsert, [cart.preCustomerDocument,
|
||||
cart.id, cart.preCustomerName, cart.preCustomerPhone, cart.idSeller]);
|
||||
await queryRunner.commitTransaction();
|
||||
|
||||
} catch (err) {
|
||||
await queryRunner.rollbackTransaction();
|
||||
throw err;
|
||||
}
|
||||
finally {
|
||||
await queryRunner.release();
|
||||
await connection.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user