kinan قام بنشر سبتمبر 24, 2023 مشاركة قام بنشر سبتمبر 24, 2023 عندي, جدول محاسبة شيت, يحتاج بعض التعديلات لا أعلم من أي ابدأ ولا كيف, هو الان بحالة جيدة لكن التعديلات التي يحتاجها تحتاج انسانا خبيرا, او له نظرة في الاكسل والمحاسبة. كيف يمكنكم مساعدتي؟ الشيت يعمل عن طريق apps script اكواد برمجية وما الى ذلك. رابط هذا التعليق شارك More sharing options...
احمد عبدالحليم قام بنشر سبتمبر 24, 2023 مشاركة قام بنشر سبتمبر 24, 2023 السلام عليكم بها نبدا الاكواد الخاصة Google Sheets هى بلغة JavaScript ارفق الملف وما تحتاجه ربما استطيع مساعدتك رابط هذا التعليق شارك More sharing options...
kinan قام بنشر سبتمبر 24, 2023 الكاتب مشاركة قام بنشر سبتمبر 24, 2023 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- ينقصه بعض التعديلات, مثل القيام بانشاء جرد حساب خاص لكل عميل, ولم استطع القيام بذلك. رابط هذا التعليق شارك More sharing options...
احمد عبدالحليم قام بنشر سبتمبر 24, 2023 مشاركة قام بنشر سبتمبر 24, 2023 اخى الفاضل لو امكن اعمل ملف اكسل اخر على جوجل شيت لشكل واسلوب بياناتك وضع بيانات عاديه واعمل مشاركة للملف وابعت اللينك او اسحب البيانات من جوجل شيت لملف اكسل عادى وارفق الملف ووضح المطلوب وما تريده رابط هذا التعليق شارك More sharing options...
kinan قام بنشر سبتمبر 24, 2023 الكاتب مشاركة قام بنشر سبتمبر 24, 2023 يلا مباشر بعملها وببعتلك https://docs.google.com/spreadsheets/d/10IPhpo-fXs2OhocFb6GLDVxjF4d38p_-d1jb5AGshCU/edit?usp=sharing هذا كل شيء رابط هذا التعليق شارك More sharing options...
احمد عبدالحليم قام بنشر سبتمبر 30, 2023 مشاركة قام بنشر سبتمبر 30, 2023 اخى الفاضل انت ما هو المطلوب رابط هذا التعليق شارك More sharing options...
kinan قام بنشر أكتوبر 1, 2023 الكاتب مشاركة قام بنشر أكتوبر 1, 2023 اخي الفاضل احمد عبد الحليم هل يمكن ان اتواصل معك عن طريق اي برنامج بحيث يكون التواصل اسرع؟ هنا طلبك واسفل منه طلبي. رابط هذا التعليق شارك More sharing options...
kinan قام بنشر أكتوبر 2, 2023 الكاتب مشاركة قام بنشر أكتوبر 2, 2023 مرحبا اخي الكريم رابط هذا التعليق شارك More sharing options...
kinan قام بنشر أكتوبر 11, 2023 الكاتب مشاركة قام بنشر أكتوبر 11, 2023 هل لديك رقم للتواصل هذا رقمي +905437127276 رابط هذا التعليق شارك More sharing options...
الردود الموصى بها
من فضلك سجل دخول لتتمكن من التعليق
ستتمكن من اضافه تعليقات بعد التسجيل
سجل دخولك الان