اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

غوغل شيت


kinan

الردود الموصى بها

عندي, جدول محاسبة شيت, يحتاج بعض التعديلات
لا أعلم من أي ابدأ ولا كيف, هو الان بحالة جيدة لكن التعديلات التي يحتاجها تحتاج انسانا خبيرا, او له نظرة في الاكسل والمحاسبة.
كيف يمكنكم مساعدتي؟
الشيت يعمل عن طريق apps script

اكواد برمجية وما الى ذلك.

رابط هذا التعليق
شارك

السلام عليكم بها نبدا 
الاكواد الخاصة Google Sheets هى بلغة JavaScript 

ارفق الملف وما تحتاجه ربما استطيع مساعدتك

 

رابط هذا التعليق
شارك

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  if (sheet.getName() == 'جدول المبيعات') {
    var range = e.range;
    var row = range.getRow();
    var column = range.getColumn();
   
    // الجزء الجديد للتحقق من العمودين I و J
    if (column === 9 || column === 10) {
      var paidZ = sheet.getRange(row, 9).getValue();
      var paidM = sheet.getRange(row, 10).getValue();
     
      // إذا تم الدفع كاملًا
      if (paidZ === true && paidM === true) {
        // تغيير لون النص ولون الخلية ليكونا متطابقين (أصفر على أصفر)
        sheet.getRange(row, 1, 1, 10).setFontColor("#ffff01").setBackground("#ffff01");
        sheet.getRange(row, 11).setValue('إخفاء');
      } else {
        // إعادة اللون إلى الحالة الافتراضية (أسود على أبيض)
        sheet.getRange(row, 1, 1, 10).setFontColor("#000000").setBackground("#ffffff");
        // إذا لم يتم الدفع كاملًا
        sheet.getRange(row, 11).setValue('عرض');
      }
    }
  }
 
// باقي الكود كما هو
    if ((column === 1 || column === 2) && !range.getValue()) {
      sheet.getRange(row, 5, 1, 4).clearContent();
      return;
    }
 
    if (column === 1 || column === 2) {
      updateSupplier(row);
    }
 
    if (column === 1 || column === 2 || column === 3) {
      updateCapital(row);
      if (column !== 3) {
        updateSalePrice(row);
      }
      updateProfit(row);
      updateDate(row);
    }
 
    if (column === 3 || column === 6) {
      updateProfit(row);
    }
  }
// ... باقي الأكواد (الوظائف الأخرى) كما هي، لا تحتاج لتعديل
 
function updateProfit(row) {
  var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
 
  // استخدم القيمة الموجودة في العمود أو استخدم صفر إذا كانت القيمة فارغة
  var salePrice = transactionSheet.getRange(row, 3).getValue() || 0;
  var capital = transactionSheet.getRange(row, 6).getValue() || 0;
 
  // الربح الصافي = السعر - رأس المال
  var netProfit = salePrice - capital;
 
  // كتابة الربح الصافي في العمود H
  transactionSheet.getRange(row, 8).setValue(netProfit);
  }
// ... باقي الأكواد (الوظائف الأخرى) كما هي، لا تحتاج لتعديل
function updateSalePrice(row) {
  var customerTransactionSheet = SpreadsheetApp.getActive().getSheetByName('معاملات العملاء');
  var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
  var item = transactionSheet.getRange(row, 1).getValue();
  var customer = transactionSheet.getRange(row, 2).getValue();
  var itemRow = findRow(customerTransactionSheet, item, 'A');
  var customerColumn = findColumn(customerTransactionSheet, customer, '1');
  var salePriceCell = transactionSheet.getRange(row, 3);
}
function updateSupplier(row) {
  var dataSheet = SpreadsheetApp.getActive().getSheetByName('جدول الداتا');
  var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
  var data = dataSheet.getDataRange().getValues();
  var item = transactionSheet.getRange(row, 1).getValue();
  for (var i = 0; i < data.length; i++) {
    if (data[i][0] == item) {
      var supplier = data[i][1];
      transactionSheet.getRange(row, 5).setValue(supplier);
    }
  }
}
function updateCapital(row) {
  var dataSheet = SpreadsheetApp.getActive().getSheetByName('جدول الداتا');
  var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
  var data = dataSheet.getDataRange().getValues();
  var item = transactionSheet.getRange(row, 1).getValue();
  for (var i = 0; i < data.length; i++) {
    if (data[i][0] == item) {
      var capital = data[i][2];
      transactionSheet.getRange(row, 6).setValue(capital);
    }
  }
}
function updateDate(row) {
  var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
 
  // احصل على اسم السلعة واسم العميل
  var item = transactionSheet.getRange(row, 1).getValue();
  var customer = transactionSheet.getRange(row, 2).getValue();
 
  // احصل على القيمة الموجودة في عمود التاريخ
  var existingDate = transactionSheet.getRange(row, 7).getValue();
 
  // تحقق ما إذا كان كلا من العنصر والعميل ليس فارغًا وما إذا كان التاريخ فارغًا
  if (item && customer && !existingDate) {
    // أضف التاريخ والوقت الحاليين في العمود G
    transactionSheet.getRange(row, 7).setValue(new Date());
  }
  // لا تحتاج لمسح المحتوى إذا كان عنصرًا أو عميلًا فارغًا لأن التاريخ يجب أن يبقى كما هو
}
// helper function to find the row number of a value in a specific column
function findRow(sheet, value, column) {
  var data = sheet.getRange(column + ":" + column).getValues(); // get all the data in one call
  for (var i = data.length - 1; i >= 0; i--) {
    if (data[i][0] == value) return i + 1;
  }
  return null;
}
// helper function to find the column number of a value in a specific row
function findColumn(sheet, value, row) {
  var data = sheet.getRange(row + ":" + row).getValues()[0]; // get all the data in one call
  for (var i = data.length - 1; i >= 0; i--) {
    if (data[i] == value) return i + 1;
  }
  return null;
}

هذا الكود الذي يعمل, لكن هنا بعض الأخطاء فيه.
مثلا,
1- كان يأخذ اسم العميل وسعره تلقائيا من الداتا لم يعد يفعل ذلك.
2- عندما اقوم بسحب السعر بطريقة السحب والافلات لا يأخذ الأوامر.
3- ينقصه بعض التعديلات, مثل القيام بانشاء جرد حساب خاص لكل عميل, ولم استطع القيام بذلك.

 

رابط هذا التعليق
شارك

اخى الفاضل لو امكن اعمل ملف اكسل اخر على جوجل شيت لشكل واسلوب بياناتك وضع بيانات عاديه واعمل مشاركة للملف وابعت اللينك 

او اسحب البيانات من جوجل شيت لملف اكسل عادى وارفق الملف 

ووضح المطلوب وما تريده

رابط هذا التعليق
شارك

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information