Angus Wiki
  • Group 1
    • Angus Wiki
    • Control Types
      • Text
      • Textarea
      • Password
      • Spacer
      • Integer
      • Double
      • Double4
      • Double5
      • Date
      • Daterange
      • Time
      • Datetime
      • Select
      • Anglookup
      • Boolean
      • Button
      • Filter
      • Radio
      • Multiselect
      • Dbimage
      • Image
      • Html
      • Chart
      • Widget
      • Autocomplete
      • Chip
      • Phoneinput
    • General type
    • Toolbar
    • Menu
    • Grid
    • Grid Filter Panel
    • Page
    • Analysis
    • OptionRecord
    • Record
      • Recordlarda Fuzzy Search Kullanımı
      • Recordlara Panel Ekleme
      • Record Butonlarına da Rol Verilebilir
    • Record scripti
    • Butonda Script Kullanımı
    • Buton ve row actiondan gridfilter veri gönderme
    • Combine Latest
    • Sp ye istek atıp dönen id bir tane ise record fazla ise grid açan buton scripti
  • Group 3
    • Angus Lokal Kurulum Linux
    • İlk kurulum
    • Kubernetes Dashboard
  • Group 2
    • Angus Lokal Kurulum Windows
    • Gerekli Uygulamalar
      • Ubuntu Kurulumu
      • WSL Kurulumu
      • Docker Kurulumu
      • Kubernetes Kurulumu
      • Microsoft SQL Kurulumu
    • Kubernetes Ayarları
    • Sistemin Çalıştırılması
  • Group 4
    • Scriptler
      • Rezervasyon Kartı
      • Rezervasyon Kartı BeforeSave Script
      • Rezervasyon Kartı BeforeClone Script
      • Fatura
      • Fatura BeforeSave Script
      • Fatura Before Print Script Editor
      • Satış Projeleri
      • Satış Projeleri BeforeSave Script
      • Kapalı Oda İşlemleri
      • Kayıp Bulunan Listesi
      • İş Kaydı
      • İş Kaydı BeforeSave Script
      • Hesap Kartı
      • Stok Fiyat Anlaşması
      • Proforma Fatura Listesi
      • Fatura BeforeSave Script
      • Fiş
      • Fiş BeforeSave Script
      • Fiş AfterSave Script
      • Fiş Before Print Script
      • Fiş BeforeClone Script
      • Ödeme Emri
      • Ödeme Emri BeforeSave Script
      • Çek/Senet
      • Banka Ekstresi Oku BeforeSave Script
      • Hesap Mutabakatı
      • Babs Mutabakat
      • Kur Değerleme
      • Kur Değerleme(Toplu Döviz)
      • Yaşlandırma Analizi
      • Seyahat Acentası
      • Fiyat Kodu
      • Kontrat Detay
      • Entegrasyon Bağlantı Tanımları
      • Stok İrsaliye
      • Stok İrsaliye BeforeSave Script
      • Stok Fişi
      • Stok Fişi BeforeSave Script
      • Talep
      • Talep BeforeSave Script
      • Üretim Emri
      • Stok Sayım
      • Stok Sayım BeforeSave Script
      • Tüketim Fişleri
      • Adisyon Before Save Script
      • Stok Fiyat Anlaşması
      • Stok Fiyat Anlaşması BeforeSave Script
      • Misafir Kartı
      • Yeni Talep
      • Yeni Talep BeforeSave Script
      • Yeni Talep AfterSave Script
      • Çağrı Merkezi Kaydı
      • Çağrı Merkezi Kaydı AfterSave Script
      • Üyelik
      • Ödeme Linki
      • Doluluk Grafikleri
      • Dağılım Analizi
      • Park Giriş BeforeClone Script
      • Park Giriş
      • Park Rezervasyonu
      • Park Rezervasyonu BeforeSave Script
      • Park Rezervasyonu BeforeClone Script
      • Seyahat Acentası
      • Kullanıcı Bilgileri
      • Kullanıcı Bilgileri BeforeSave Script
      • Medikal Rezervasyon Kartı
      • Medikal BeforeSave Script
      • Medikal BeforeClone Script
      • Ödeme Linki
      • Ödeme Linki BeforeSave Script
  • Group 5
    • IP Santral Entegrasyonu
    • Ip Santral Sistemi
    • File Transfer Service
    • IP Santral Engtegrasyonu Angus Kullanımı
  • Response Header'larındaki Alanlar ve Anlamları
Powered by GitBook
On this page
  1. Group 4
  2. Scriptler

Fatura BeforeSave Script

Fatura

return new Promise(async (resolve, reject) => {
  if (
    this.recordService.lastData &&
    this.recordService.lastData.ACCOUNTINGRECEIPTID
  ) {
    
    return reject(
      new Error(
        angus.languageService.staticTranslator.translate(
          'This invoice is integrated, you cannot make changes!'
        )
      )
    );
  }
 
  const awaitIf = async (fn, ms = 100) => {
    await new Promise(async (resolve, reject) => {
      let result = false;
      try {
        result = fn();
      } catch (e) {
        console.error(e);
      }

      if (result) {
        resolve(true);
      } else {
        await rxjs.timer(ms).toPromise();
        resolve(await awaitIf(fn));
      }
    });
  };

  let faturaRecGrid = this.allGrids['stock-invoice-line'];
  await awaitIf(
    () =>
      faturaRecGrid.grid &&
      faturaRecGrid.grid.agGrid &&
      faturaRecGrid.grid.agGridReady,
    0
  );

  if (
    this.recordService.lastData &&
    this.recordService.lastData.SENDINGSTATUS == 3 &&
    [1, 3, 5, 22, 24, 26].indexOf(this.recordService.lastData.TYPEID) !== -1
  ) 

  if (this.allGrids['stock-invoice-line'].api.getDisplayedRowCount() === 0)
    return reject(
      new Error(
        angus.languageService.staticTranslator.translate(
          'You cannot save the invoice without a line!'
        )
      )
    );

  const deleteAllRows = [];
  this.allGrids['stock-invoice-line'].grid.agGrid.api.forEachNode((x) => {
    if (x.toBeDeleted == true) deleteAllRows.push(x);
  });

  if (
    this.allGrids['stock-invoice-line'].api.getDisplayedRowCount() ==
    deleteAllRows.length
  ) {
    let msg = angus.languageService.dynamicTranslator.translate(
      'There are no valid lines'
    );
    return reject(new Error(msg));
  }
  const invoiceNoControl = await this.api
    .execSP({
      Object: 'SP_INVOICE_NO_CONTROL',
      Parameters: {
        INVOICENO: this.allFormControls['InvoiceId'].value,
        ADDRESSID: this.allFormControls['ADDRESSID'].value,
        INVOICEID: this.allFormControls['ID'].value,
        INVDATE: this.allFormControls['IssueDate'].value,
        TYPEID: this.recordService.formGroup.controls.TYPEID.value,
      },
    })
    .toPromise();
  let invResult = invoiceNoControl[0][0];

  if (!invResult.SUCCESS) {
    return reject(new Error(invResult.MESSAGE));
  }

  /*if(this.isUsedInvoice){
    return reject( new Error(this.languageService.staticTranslator.translate("This invoice number has been used before")));
  }*/

  let gridCount = 0;
  this.recordService.grids['stock-invoice-line'].grid.agGrid.api.forEachNode(
    (node) => {
      if (node.toBeDeleted == false) {
        gridCount++;
      }
    }
  );

  this.recordService.component.allFormControls.LineCountNumeric.setValue(
    gridCount
  );

  let uidControl = this.recordService.formGroup.controls.UUID.value;

  if (uidControl === null) {
    let newUID = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
      .replace(/[xy]/g, (c) => {
        var r = (Math.random() * 16) | 0,
          v = c == 'x' ? r : (r & 0x3) | 0x8;
        return v.toString(16);
      })
      .toUpperCase();
    this.recordService.formGroup.controls.UUID.setValue(newUID);
  }

  
  /*
  if (this.opener.route.snapshot.params.mode == 'mustahsil') {
    let errMsg = '';
    this.recordService.grids['stock-invoice-line'].grid.agGrid.api.forEachNode(
      (node) => {
        if (
          node.data.DISCAMOUNT ||
          node.data.DISCPERCENT1 ||
          node.data.DISCPERCENT2 ||
          node.data.TaxPercent
        ) {
          console.log(node, 'node');
          errMsg += node.data.STOCKID_NAME + ', ';
        }
      }
    );
    if (errMsg) {
      return reject(
        new Error(
          angus.languageService.staticTranslator.translate(
            errMsg + 'Stokları için KDV ve İndirim bilgileri sıfırlanmalıdır.'
          )
        )
      );
    }
  }
*/
  resolve();
});
PreviousFaturaNextFatura Before Print Script Editor

Last updated 3 years ago